aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-08-06 18:29:33 +0100
committerJustin Clark-Casey (justincc)2013-08-06 18:29:33 +0100
commit4c2f6de8e4957df3c7186437089ba0925edb1a08 (patch)
treedd8e8afc6df95ce556b08b84ea29fba78f8ddb3c
parentAdd "debug threadpool status" console command to show min/max/current worker/... (diff)
downloadopensim-SC_OLD-4c2f6de8e4957df3c7186437089ba0925edb1a08.zip
opensim-SC_OLD-4c2f6de8e4957df3c7186437089ba0925edb1a08.tar.gz
opensim-SC_OLD-4c2f6de8e4957df3c7186437089ba0925edb1a08.tar.bz2
opensim-SC_OLD-4c2f6de8e4957df3c7186437089ba0925edb1a08.tar.xz
Add the experimental ability to dump stats (result of command "show stats all") to file OpenSimStats.log every 5 seconds.
This can currently only be activated with the console command "debug stats record start". Off by default. Records to file OpenSimStats.log for simulator and RobustStats.log for ROBUST
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Monitoring/StatsManager.cs52
-rw-r--r--bin/OpenSim.32BitLaunch.exe.config36
-rwxr-xr-xbin/OpenSim.exe.config21
-rw-r--r--bin/Robust.32BitLaunch.exe.config22
-rw-r--r--bin/Robust.exe.config21
5 files changed, 139 insertions, 13 deletions
diff --git a/OpenSim/Framework/Monitoring/StatsManager.cs b/OpenSim/Framework/Monitoring/StatsManager.cs
index 87197f4..c8e838c 100644
--- a/OpenSim/Framework/Monitoring/StatsManager.cs
+++ b/OpenSim/Framework/Monitoring/StatsManager.cs
@@ -81,6 +81,8 @@ namespace OpenSim.Framework.Monitoring
81 + "More than one name can be given separated by spaces.\n" 81 + "More than one name can be given separated by spaces.\n"
82 + "THIS STATS FACILITY IS EXPERIMENTAL AND DOES NOT YET CONTAIN ALL STATS", 82 + "THIS STATS FACILITY IS EXPERIMENTAL AND DOES NOT YET CONTAIN ALL STATS",
83 HandleShowStatsCommand); 83 HandleShowStatsCommand);
84
85 StatsLogger.RegisterConsoleCommands(console);
84 } 86 }
85 87
86 public static void HandleShowStatsCommand(string module, string[] cmd) 88 public static void HandleShowStatsCommand(string module, string[] cmd)
@@ -145,29 +147,55 @@ namespace OpenSim.Framework.Monitoring
145 } 147 }
146 } 148 }
147 149
148 private static void OutputAllStatsToConsole(ICommandConsole con) 150 public static List<string> GetAllStatsReports()
149 { 151 {
152 List<string> reports = new List<string>();
153
150 foreach (var category in RegisteredStats.Values) 154 foreach (var category in RegisteredStats.Values)
151 { 155 reports.AddRange(GetCategoryStatsReports(category));
152 OutputCategoryStatsToConsole(con, category); 156
153 } 157 return reports;
158 }
159
160 private static void OutputAllStatsToConsole(ICommandConsole con)
161 {
162 foreach (string report in GetAllStatsReports())
163 con.Output(report);
164 }
165
166 private static List<string> GetCategoryStatsReports(
167 SortedDictionary<string, SortedDictionary<string, Stat>> category)
168 {
169 List<string> reports = new List<string>();
170
171 foreach (var container in category.Values)
172 reports.AddRange(GetContainerStatsReports(container));
173
174 return reports;
154 } 175 }
155 176
156 private static void OutputCategoryStatsToConsole( 177 private static void OutputCategoryStatsToConsole(
157 ICommandConsole con, SortedDictionary<string, SortedDictionary<string, Stat>> category) 178 ICommandConsole con, SortedDictionary<string, SortedDictionary<string, Stat>> category)
158 { 179 {
159 foreach (var container in category.Values) 180 foreach (string report in GetCategoryStatsReports(category))
160 { 181 con.Output(report);
161 OutputContainerStatsToConsole(con, container);
162 }
163 } 182 }
164 183
165 private static void OutputContainerStatsToConsole( ICommandConsole con, SortedDictionary<string, Stat> container) 184 private static List<string> GetContainerStatsReports(SortedDictionary<string, Stat> container)
166 { 185 {
186 List<string> reports = new List<string>();
187
167 foreach (Stat stat in container.Values) 188 foreach (Stat stat in container.Values)
168 { 189 reports.Add(stat.ToConsoleString());
169 con.Output(stat.ToConsoleString()); 190
170 } 191 return reports;
192 }
193
194 private static void OutputContainerStatsToConsole(
195 ICommandConsole con, SortedDictionary<string, Stat> container)
196 {
197 foreach (string report in GetContainerStatsReports(container))
198 con.Output(report);
171 } 199 }
172 200
173 // Creates an OSDMap of the format: 201 // Creates an OSDMap of the format:
diff --git a/bin/OpenSim.32BitLaunch.exe.config b/bin/OpenSim.32BitLaunch.exe.config
index 6ac0206..6a6b3c8 100644
--- a/bin/OpenSim.32BitLaunch.exe.config
+++ b/bin/OpenSim.32BitLaunch.exe.config
@@ -11,22 +11,56 @@
11 </appSettings> 11 </appSettings>
12 <log4net> 12 <log4net>
13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> 13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
14 <filter type="log4net.Filter.LoggerMatchFilter">
15 <loggerToMatch value="special"/>
16 <acceptOnMatch value="false"/>
17 </filter>
14 <layout type="log4net.Layout.PatternLayout"> 18 <layout type="log4net.Layout.PatternLayout">
15 <conversionPattern value="%date{HH:mm:ss} - %message%newline" /> 19 <conversionPattern value="%date{HH:mm:ss} - %message" />
20 <!-- console log with milliseconds. Useful for debugging -->
21<!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> -->
16 </layout> 22 </layout>
17 </appender> 23 </appender>
24
18 <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 25 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
19 <file value="OpenSim.32BitLaunch.log" /> 26 <file value="OpenSim.32BitLaunch.log" />
20 <appendToFile value="true" /> 27 <appendToFile value="true" />
28 <filter type="log4net.Filter.LoggerMatchFilter">
29 <loggerToMatch value="special"/>
30 <acceptOnMatch value="false"/>
31 </filter>
21 <layout type="log4net.Layout.PatternLayout"> 32 <layout type="log4net.Layout.PatternLayout">
22 <conversionPattern value="%date %-5level - %logger %message%newline" /> 33 <conversionPattern value="%date %-5level - %logger %message%newline" />
23 </layout> 34 </layout>
24 </appender> 35 </appender>
25 36
37 <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
38 <file value="OpenSimStats.log"/>
39 <appendToFile value="true" />
40 <layout type="log4net.Layout.PatternLayout">
41 <conversionPattern value="%date - %message%newline" />
42 </layout>
43 </appender>
44
26 <root> 45 <root>
27 <level value="DEBUG" /> 46 <level value="DEBUG" />
28 <appender-ref ref="Console" /> 47 <appender-ref ref="Console" />
29 <appender-ref ref="LogFileAppender" /> 48 <appender-ref ref="LogFileAppender" />
30 </root> 49 </root>
50
51 <!-- Independently control logging level for XEngine -->
52 <logger name="OpenSim.Region.ScriptEngine.XEngine">
53 <level value="INFO"/>
54 </logger>
55
56 <!-- Independently control logging level for per region module loading -->
57 <logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin">
58 <level value="INFO"/>
59 </logger>
60
61 <!-- used for stats recording -->
62 <logger name="special.StatsLogger">
63 <appender-ref ref="StatsLogFileAppender"/>
64 </logger>
31 </log4net> 65 </log4net>
32</configuration> 66</configuration>
diff --git a/bin/OpenSim.exe.config b/bin/OpenSim.exe.config
index 8a891f4..b2cb4e5 100755
--- a/bin/OpenSim.exe.config
+++ b/bin/OpenSim.exe.config
@@ -11,6 +11,10 @@
11 </appSettings> 11 </appSettings>
12 <log4net> 12 <log4net>
13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> 13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
14 <filter type="log4net.Filter.LoggerMatchFilter">
15 <loggerToMatch value="special"/>
16 <acceptOnMatch value="false"/>
17 </filter>
14 <layout type="log4net.Layout.PatternLayout"> 18 <layout type="log4net.Layout.PatternLayout">
15 <conversionPattern value="%date{HH:mm:ss} - %message" /> 19 <conversionPattern value="%date{HH:mm:ss} - %message" />
16 <!-- console log with milliseconds. Useful for debugging --> 20 <!-- console log with milliseconds. Useful for debugging -->
@@ -21,11 +25,23 @@
21 <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 25 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
22 <file value="OpenSim.log" /> 26 <file value="OpenSim.log" />
23 <appendToFile value="true" /> 27 <appendToFile value="true" />
28 <filter type="log4net.Filter.LoggerMatchFilter">
29 <loggerToMatch value="special"/>
30 <acceptOnMatch value="false"/>
31 </filter>
24 <layout type="log4net.Layout.PatternLayout"> 32 <layout type="log4net.Layout.PatternLayout">
25 <conversionPattern value="%date %-5level - %logger %message%newline" /> 33 <conversionPattern value="%date %-5level - %logger %message%newline" />
26 </layout> 34 </layout>
27 </appender> 35 </appender>
28 36
37 <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
38 <file value="OpenSimStats.log"/>
39 <appendToFile value="true" />
40 <layout type="log4net.Layout.PatternLayout">
41 <conversionPattern value="%date - %message%newline" />
42 </layout>
43 </appender>
44
29 <root> 45 <root>
30 <level value="DEBUG" /> 46 <level value="DEBUG" />
31 <appender-ref ref="Console" /> 47 <appender-ref ref="Console" />
@@ -42,5 +58,10 @@
42 <level value="INFO"/> 58 <level value="INFO"/>
43 </logger> 59 </logger>
44 60
61 <!-- used for stats recording -->
62 <logger name="special.StatsLogger">
63 <appender-ref ref="StatsLogFileAppender"/>
64 </logger>
65
45 </log4net> 66 </log4net>
46</configuration> 67</configuration>
diff --git a/bin/Robust.32BitLaunch.exe.config b/bin/Robust.32BitLaunch.exe.config
index dae45ff..ec17049 100644
--- a/bin/Robust.32BitLaunch.exe.config
+++ b/bin/Robust.32BitLaunch.exe.config
@@ -11,22 +11,44 @@
11 </appSettings> 11 </appSettings>
12 <log4net> 12 <log4net>
13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> 13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
14 <filter type="log4net.Filter.LoggerMatchFilter">
15 <loggerToMatch value="special"/>
16 <acceptOnMatch value="false"/>
17 </filter>
14 <layout type="log4net.Layout.PatternLayout"> 18 <layout type="log4net.Layout.PatternLayout">
15 <conversionPattern value="%date{HH:mm:ss} - %message%newline" /> 19 <conversionPattern value="%date{HH:mm:ss} - %message%newline" />
16 </layout> 20 </layout>
17 </appender> 21 </appender>
22
18 <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 23 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
19 <file value="Robust.32BitLaunch.log" /> 24 <file value="Robust.32BitLaunch.log" />
20 <appendToFile value="true" /> 25 <appendToFile value="true" />
26 <filter type="log4net.Filter.LoggerMatchFilter">
27 <loggerToMatch value="special"/>
28 <acceptOnMatch value="false"/>
29 </filter>
21 <layout type="log4net.Layout.PatternLayout"> 30 <layout type="log4net.Layout.PatternLayout">
22 <conversionPattern value="%date %-5level - %logger %message%newline" /> 31 <conversionPattern value="%date %-5level - %logger %message%newline" />
23 </layout> 32 </layout>
24 </appender> 33 </appender>
25 34
35 <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
36 <file value="RobustStats.log"/>
37 <appendToFile value="true" />
38 <layout type="log4net.Layout.PatternLayout">
39 <conversionPattern value="%date - %message%newline" />
40 </layout>
41 </appender>
42
26 <root> 43 <root>
27 <level value="DEBUG" /> 44 <level value="DEBUG" />
28 <appender-ref ref="Console" /> 45 <appender-ref ref="Console" />
29 <appender-ref ref="LogFileAppender" /> 46 <appender-ref ref="LogFileAppender" />
30 </root> 47 </root>
48
49 <!-- used for stats recording -->
50 <logger name="special.StatsLogger">
51 <appender-ref ref="StatsLogFileAppender"/>
52 </logger>
31 </log4net> 53 </log4net>
32</configuration> 54</configuration>
diff --git a/bin/Robust.exe.config b/bin/Robust.exe.config
index 4914f55..62975fd 100644
--- a/bin/Robust.exe.config
+++ b/bin/Robust.exe.config
@@ -11,6 +11,10 @@
11 </appSettings> 11 </appSettings>
12 <log4net> 12 <log4net>
13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> 13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
14 <filter type="log4net.Filter.LoggerMatchFilter">
15 <loggerToMatch value="special"/>
16 <acceptOnMatch value="false"/>
17 </filter>
14 <layout type="log4net.Layout.PatternLayout"> 18 <layout type="log4net.Layout.PatternLayout">
15 <conversionPattern value="%date{HH:mm:ss} - %message%newline" /> 19 <conversionPattern value="%date{HH:mm:ss} - %message%newline" />
16 </layout> 20 </layout>
@@ -19,15 +23,32 @@
19 <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 23 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
20 <file value="Robust.log" /> 24 <file value="Robust.log" />
21 <appendToFile value="true" /> 25 <appendToFile value="true" />
26 <filter type="log4net.Filter.LoggerMatchFilter">
27 <loggerToMatch value="special"/>
28 <acceptOnMatch value="false"/>
29 </filter>
22 <layout type="log4net.Layout.PatternLayout"> 30 <layout type="log4net.Layout.PatternLayout">
23 <conversionPattern value="%date %-5level - %logger %message%newline" /> 31 <conversionPattern value="%date %-5level - %logger %message%newline" />
24 </layout> 32 </layout>
25 </appender> 33 </appender>
26 34
35 <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender">
36 <file value="RobustStats.log"/>
37 <appendToFile value="true" />
38 <layout type="log4net.Layout.PatternLayout">
39 <conversionPattern value="%date - %message%newline" />
40 </layout>
41 </appender>
42
27 <root> 43 <root>
28 <level value="DEBUG" /> 44 <level value="DEBUG" />
29 <appender-ref ref="Console" /> 45 <appender-ref ref="Console" />
30 <appender-ref ref="LogFileAppender" /> 46 <appender-ref ref="LogFileAppender" />
31 </root> 47 </root>
48
49 <!-- used for stats recording -->
50 <logger name="special.StatsLogger">
51 <appender-ref ref="StatsLogFileAppender"/>
52 </logger>
32 </log4net> 53 </log4net>
33</configuration> 54</configuration>