From 818af9d4827ea66358abbc3929d20e09861c7306 Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Sun, 22 Feb 2009 01:26:18 +0000 Subject: Refactor log4net logger handling in script engine. (#3148) --- .../ScriptEngine/DotNetEngine/AppDomainManager.cs | 13 +++--- OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs | 9 +++- .../ScriptEngine/DotNetEngine/EventManager.cs | 16 ++++--- .../ScriptEngine/DotNetEngine/EventQueueManager.cs | 16 ++++--- .../DotNetEngine/EventQueueThreadClass.cs | 42 +++++++++--------- .../ScriptEngine/DotNetEngine/MaintenanceThread.cs | 8 ++-- .../ScriptEngine/DotNetEngine/ScriptEngine.cs | 5 --- .../ScriptEngine/DotNetEngine/ScriptManager.cs | 51 +++++++++++----------- 8 files changed, 85 insertions(+), 75 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine') diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs index eeca143..d35e585 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs @@ -34,6 +34,7 @@ using System.Security.Policy; using System.Security.Permissions; using OpenSim.Region.ScriptEngine.Interfaces; using OpenSim.Region.ScriptEngine.Shared.ScriptBase; +using log4net; namespace OpenSim.Region.ScriptEngine.DotNetEngine { @@ -51,6 +52,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // 4. Unload AppDomain completely when all scripts in it has stopped // + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private int maxScriptsPerAppDomain = 1; // Internal list of all AppDomains @@ -138,12 +141,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine AppDomain AD = AppDomain.CreateDomain("ScriptAppDomain_" + AppDomainNameCount, null, ads); - m_scriptEngine.Log.Info("[" + m_scriptEngine.ScriptEngineName + - "]: AppDomain Loading: " + - AssemblyName.GetAssemblyName( - "OpenSim.Region.ScriptEngine.Shared.dll").ToString()); + m_log.Info("[" + m_scriptEngine.ScriptEngineName + + "]: AppDomain Loading: " + + AssemblyName.GetAssemblyName( + "OpenSim.Region.ScriptEngine.Shared.dll").ToString()); AD.Load(AssemblyName.GetAssemblyName( - "OpenSim.Region.ScriptEngine.Shared.dll")); + "OpenSim.Region.ScriptEngine.Shared.dll")); // Return the new AppDomain return AD; diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs index 56b4c8e..f10722b 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs @@ -25,22 +25,27 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using System.Reflection; +using log4net; + namespace OpenSim.Region.ScriptEngine.DotNetEngine { public static class Common { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public static ScriptEngine mySE; // This class just contains some static log stuff used for debugging. public static void SendToDebug(string message) { - mySE.Log.Info("[" + mySE.ScriptEngineName + "]: Debug: " + message); + m_log.Info("[" + mySE.ScriptEngineName + "]: Debug: " + message); } public static void SendToLog(string message) { - mySE.Log.Info("[" + mySE.ScriptEngineName + "]: LOG: " + message); + m_log.Info("[" + mySE.ScriptEngineName + "]: LOG: " + message); } } } diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs index cc78b51..e55abb7 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs @@ -27,6 +27,7 @@ using System; using System.Collections.Generic; +using System.Reflection; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.CoreModules.Avatar.Currency.SampleMoney; @@ -35,6 +36,7 @@ using OpenSim.Region; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.ScriptEngine.Shared; +using log4net; namespace OpenSim.Region.ScriptEngine.DotNetEngine { @@ -63,6 +65,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // verify what exact parameters are needed. // + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private ScriptEngine myScriptEngine; public EventManager(ScriptEngine _ScriptEngine, bool performHookUp) @@ -78,8 +82,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine public void HookUpEvents() { - myScriptEngine.Log.Info("[" + myScriptEngine.ScriptEngineName + - "]: Hooking up to server events"); + m_log.Info("[" + myScriptEngine.ScriptEngineName + + "]: Hooking up to server events"); myScriptEngine.World.EventManager.OnObjectGrab += touch_start; @@ -293,9 +297,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine if (engine != myScriptEngine.ScriptEngineName) return; - myScriptEngine.Log.Debug("OnRezScript localID: " + localID + - " LLUID: " + itemID.ToString() + " Size: " + - script.Length); + m_log.Debug("OnRezScript localID: " + localID + + " LLUID: " + itemID.ToString() + " Size: " + + script.Length); myScriptEngine.m_ScriptManager.StartScript(localID, itemID, script, startParam, postOnRez); @@ -303,7 +307,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine public void OnRemoveScript(uint localID, UUID itemID) { - myScriptEngine.Log.Debug("OnRemoveScript localID: " + localID + " LLUID: " + itemID.ToString()); + m_log.Debug("OnRemoveScript localID: " + localID + " LLUID: " + itemID.ToString()); myScriptEngine.m_ScriptManager.StopScript( localID, itemID diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs index 4a094e2..31c0d4d 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs @@ -28,8 +28,10 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Reflection; using OpenMetaverse; using OpenSim.Region.ScriptEngine.Shared; +using log4net; namespace OpenSim.Region.ScriptEngine.DotNetEngine { @@ -58,6 +60,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // Not noticeable unless server is under high load. // + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public ScriptEngine m_ScriptEngine; /// @@ -211,7 +215,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine { EventQueueThreadClass eqtc = new EventQueueThreadClass(); eventQueueThreads.Add(eqtc); - //m_ScriptEngine.Log.Debug("[" + m_ScriptEngine.ScriptEngineName + "]: Started new script execution thread. Current thread count: " + eventQueueThreads.Count); + //m_log.Debug("[" + m_ScriptEngine.ScriptEngineName + "]: Started new script execution thread. Current thread count: " + eventQueueThreads.Count); } private void AbortThreadClass(EventQueueThreadClass threadClass) @@ -225,10 +229,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } catch (Exception) { - //m_ScriptEngine.Log.Error("[" + m_ScriptEngine.ScriptEngineName + ":EventQueueManager]: If you see this, could you please report it to Tedd:"); - //m_ScriptEngine.Log.Error("[" + m_ScriptEngine.ScriptEngineName + ":EventQueueManager]: Script thread execution timeout kill ended in exception: " + ex.ToString()); + //m_log.Error("[" + m_ScriptEngine.ScriptEngineName + ":EventQueueManager]: If you see this, could you please report it to Tedd:"); + //m_log.Error("[" + m_ScriptEngine.ScriptEngineName + ":EventQueueManager]: Script thread execution timeout kill ended in exception: " + ex.ToString()); } - //m_ScriptEngine.Log.Debug("[" + m_ScriptEngine.ScriptEngineName + "]: Killed script execution thread. Remaining thread count: " + eventQueueThreads.Count); + //m_log.Debug("[" + m_ScriptEngine.ScriptEngineName + "]: Killed script execution thread. Remaining thread count: " + eventQueueThreads.Count); } #endregion @@ -346,8 +350,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine { if (eventQueue.Count >= EventExecutionMaxQueueSize) { - m_ScriptEngine.Log.Error("[" + m_ScriptEngine.ScriptEngineName + "]: ERROR: Event execution queue item count is at " + eventQueue.Count + ". Config variable \"EventExecutionMaxQueueSize\" is set to " + EventExecutionMaxQueueSize + ", so ignoring new event."); - m_ScriptEngine.Log.Error("[" + m_ScriptEngine.ScriptEngineName + "]: Event ignored: localID: " + localID + ", itemID: " + itemID + ", FunctionName: " + FunctionName); + m_log.Error("[" + m_ScriptEngine.ScriptEngineName + "]: ERROR: Event execution queue item count is at " + eventQueue.Count + ". Config variable \"EventExecutionMaxQueueSize\" is set to " + EventExecutionMaxQueueSize + ", so ignoring new event."); + m_log.Error("[" + m_ScriptEngine.ScriptEngineName + "]: Event ignored: localID: " + localID + ", itemID: " + itemID + ", FunctionName: " + FunctionName); return false; } diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs index 01cbb72..5451df2 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs @@ -47,6 +47,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // within a class public class EventQueueThreadClass { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + // How many ms to sleep if queue is empty private static int nothingToDoSleepms;// = 50; private static ThreadPriority MyThreadPriority; @@ -110,11 +112,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine break; default: MyThreadPriority = ThreadPriority.BelowNormal; - m_ScriptEngine.Log.Error( - "[ScriptEngine.DotNetEngine]: Unknown "+ - "priority type \"" + pri + - "\" in config file. Defaulting to "+ - "\"BelowNormal\"."); + m_log.Error( + "[ScriptEngine.DotNetEngine]: Unknown "+ + "priority type \"" + pri + + "\" in config file. Defaulting to "+ + "\"BelowNormal\"."); break; } } @@ -186,24 +188,22 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } catch (ThreadAbortException) { - if (lastScriptEngine != null) - lastScriptEngine.Log.Info("[" + ScriptEngineName + - "]: ThreadAbortException while executing "+ - "function."); + m_log.Info("[" + ScriptEngineName + + "]: ThreadAbortException while executing "+ + "function."); } catch (SelfDeleteException) // Must delete SOG { SceneObjectPart part = - lastScriptEngine.World.GetSceneObjectPart( + lastScriptEngine.World.GetSceneObjectPart( lastLocalID); if (part != null && part.ParentGroup != null) lastScriptEngine.World.DeleteSceneObject( - part.ParentGroup, false); + part.ParentGroup, false); } catch (Exception e) { - if (lastScriptEngine != null) - lastScriptEngine.Log.ErrorFormat("[{0}]: Exception {1} thrown", ScriptEngineName, e.GetType().ToString()); + m_log.ErrorFormat("[{0}]: Exception {1} thrown", ScriptEngineName, e.GetType().ToString()); throw e; } } @@ -214,10 +214,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine catch (Exception e) { // TODO: Let users in the sim and those entering it and possibly an external watchdog know what has happened - if (lastScriptEngine != null) - lastScriptEngine.Log.ErrorFormat( - "[{0}]: Event queue thread terminating with exception. PLEASE REBOOT YOUR SIM - SCRIPT EVENTS WILL NOT WORK UNTIL YOU DO. Exception is {1}", - ScriptEngineName, e); + m_log.ErrorFormat( + "[{0}]: Event queue thread terminating with exception. PLEASE REBOOT YOUR SIM - SCRIPT EVENTS WILL NOT WORK UNTIL YOU DO. Exception is {1}", + ScriptEngineName, e); } } @@ -342,11 +341,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } catch (Exception) { - m_ScriptEngine.m_EventQueueManager. - m_ScriptEngine.Log.Error("[" + - ScriptEngineName + "]: " + - "Unable to send text in-world:\r\n" + - text); + m_log.Error("[" + + ScriptEngineName + "]: " + + "Unable to send text in-world:\r\n" + + text); } finally { diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/MaintenanceThread.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/MaintenanceThread.cs index 49e87c0..c157509 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/MaintenanceThread.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/MaintenanceThread.cs @@ -107,7 +107,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine private void StopMaintenanceThread() { #if DEBUG - //m_ScriptEngine.Log.Debug("[" + m_ScriptEngine.ScriptEngineName + "]: StopMaintenanceThread() called"); + //m_log.Debug("[" + m_ScriptEngine.ScriptEngineName + "]: StopMaintenanceThread() called"); #endif //PleaseShutdown = true; Thread.Sleep(100); @@ -120,7 +120,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } catch (Exception) { - //m_ScriptEngine.Log.Error("[" + m_ScriptEngine.ScriptEngineName + "]: Exception stopping maintenence thread: " + ex.ToString()); + //m_log.Error("[" + m_ScriptEngine.ScriptEngineName + "]: Exception stopping maintenence thread: " + ex.ToString()); } } @@ -131,8 +131,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine public void MaintenanceLoop() { //if (m_ScriptEngine.m_EventQueueManager.maxFunctionExecutionTimens < MaintenanceLoopms) - // m_ScriptEngine.Log.Warn("[" + m_ScriptEngine.ScriptEngineName + "]: " + - // "Configuration error: MaxEventExecutionTimeMs is less than MaintenanceLoopms. The Maintenance Loop will only check scripts once per run."); + // m_log.Warn("[" + m_ScriptEngine.ScriptEngineName + "]: " + + // "Configuration error: MaxEventExecutionTimeMs is less than MaintenanceLoopms. The Maintenance Loop will only check scripts once per run."); long Last_maxFunctionExecutionTimens = 0; // DateTime.Now.Ticks; long Last_ReReadConfigFilens = DateTime.Now.Ticks; diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index dc7716e..c1902ba 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs @@ -98,11 +98,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine get { return "ScriptEngine.DotNetEngine"; } } - public ILog Log - { - get { return m_log; } - } - public ScriptEngine() { // For logging, just need any instance, doesn't matter diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 0c06630..4ede7f1 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs @@ -240,14 +240,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } catch (Exception e2) // LEGIT: User Scripting { - m_scriptEngine.Log.Error("[" + - m_scriptEngine.ScriptEngineName + - "]: Error displaying error in-world: " + - e2.ToString()); - m_scriptEngine.Log.Error("[" + - m_scriptEngine.ScriptEngineName + "]: " + - "Errormessage: Error compiling script:\r\n" + - e2.Message.ToString()); + m_log.Error("[" + + m_scriptEngine.ScriptEngineName + + "]: Error displaying error in-world: " + + e2.ToString()); + m_log.Error("[" + + m_scriptEngine.ScriptEngineName + "]: " + + "Errormessage: Error compiling script:\r\n" + + e2.Message.ToString()); } } } @@ -258,8 +258,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine if (id == null) return; - m_scriptEngine.Log.DebugFormat("[{0}]: Unloading script", - m_scriptEngine.ScriptEngineName); + m_log.DebugFormat("[{0}]: Unloading script", + m_scriptEngine.ScriptEngineName); // Stop long command on script AsyncCommandManager.RemoveScript(m_scriptEngine, localID, itemID); @@ -280,11 +280,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } catch (Exception e) // LEGIT: User Scripting { - m_scriptEngine.Log.Error("[" + - m_scriptEngine.ScriptEngineName + - "]: Exception stopping script localID: " + - localID + " LLUID: " + itemID.ToString() + - ": " + e.ToString()); + m_log.Error("[" + + m_scriptEngine.ScriptEngineName + + "]: Exception stopping script localID: " + + localID + " LLUID: " + itemID.ToString() + + ": " + e.ToString()); } } @@ -379,10 +379,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine } else if (item.Action == LUType.Load) { - m_scriptEngine.Log.DebugFormat("[{0}]: Loading script", - m_scriptEngine.ScriptEngineName); + m_log.DebugFormat("[{0}]: Loading script", + m_scriptEngine.ScriptEngineName); _StartScript(item.localID, item.itemID, item.script, - item.startParam, item.postOnRez); + item.startParam, item.postOnRez); } } } @@ -414,13 +414,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine { if ((LUQueue.Count >= LoadUnloadMaxQueueSize) && m_started) { - m_scriptEngine.Log.Error("[" + - m_scriptEngine.ScriptEngineName + - "]: ERROR: Load/unload queue item count is at " + - LUQueue.Count + - ". Config variable \"LoadUnloadMaxQueueSize\" "+ - "is set to " + LoadUnloadMaxQueueSize + - ", so ignoring new script."); + m_log.Error("[" + + m_scriptEngine.ScriptEngineName + + "]: ERROR: Load/unload queue item count is at " + + LUQueue.Count + + ". Config variable \"LoadUnloadMaxQueueSize\" "+ + "is set to " + LoadUnloadMaxQueueSize + + ", so ignoring new script."); + return; } -- cgit v1.1