commit 2e35bd8c60f880d07c63631b0738315036aeace1
Author: bobwang <8205347@qq.com>
Date: Sun Feb 18 23:33:54 2024 +0800
add
diff --git a/App_Code/.svn/entries b/App_Code/.svn/entries
new file mode 100644
index 0000000..c0dedaf
--- /dev/null
+++ b/App_Code/.svn/entries
@@ -0,0 +1,164 @@
+10
+
+dir
+8
+file:///D:/Repositories/ZhangPu/trunk/view/App_Code
+file:///D:/Repositories/ZhangPu
+
+
+
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+69712cd5-45d9-e244-acd6-b3e9c1159652
+
+PagePublic.cs
+file
+
+
+
+
+2011-04-01T02:51:10.289868Z
+88adefccb355a757a198d9d5710b8905
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+637
+
+ExcelExp.cs
+file
+
+
+
+
+2011-04-01T02:51:10.305493Z
+622cd19125108d2405c68fbaa5dd594a
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1888
+
+SessionEndModule.cs
+file
+
+
+
+
+2011-04-01T02:51:10.305493Z
+afc00bfe8b5a4c00a5defa6a1221b0fb
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5243
+
+PageBase.cs
+file
+
+
+
+
+2011-04-01T02:51:10.321118Z
+ada92b7d54cfb24aba200636f6b94af8
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2850
+
diff --git a/App_Code/.svn/text-base/ExcelExp.cs.svn-base b/App_Code/.svn/text-base/ExcelExp.cs.svn-base
new file mode 100644
index 0000000..118e6ca
--- /dev/null
+++ b/App_Code/.svn/text-base/ExcelExp.cs.svn-base
@@ -0,0 +1,55 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.IO;
+using System.Text;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+namespace view.App_Code
+{
+ ///
+ /// utils 的摘要说明
+ ///
+ public class ExcelExp
+ {
+ public ExcelExp()
+ {
+ //
+ // TODO: 在此处添加构造函数逻辑
+ //
+ }
+
+
+ public static void Export(GridView GridView1, DataView dv ,ScriptManager sm,Control Button1,string fileName, Page page )
+ {
+ sm.RegisterPostBackControl(Button1);
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count-1].Visible = false;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+
+
+ HttpContext.Current.Response.Charset = "GB2312";
+ HttpContext.Current.Response.ContentEncoding = Encoding.UTF7;
+ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", Encoding.UTF8).ToString());
+ HttpContext.Current.Response.ContentType = "application/ms-excel";
+ page.EnableViewState = false;
+ StringWriter tw = new StringWriter();
+ HtmlTextWriter hw = new HtmlTextWriter(tw);
+ GridView1.RenderControl(hw);
+ HttpContext.Current.Response.Write(tw.ToString());
+ HttpContext.Current.Response.End();
+
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count - 1].Visible = true;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/App_Code/.svn/text-base/PageBase.cs.svn-base b/App_Code/.svn/text-base/PageBase.cs.svn-base
new file mode 100644
index 0000000..8245cc0
--- /dev/null
+++ b/App_Code/.svn/text-base/PageBase.cs.svn-base
@@ -0,0 +1,94 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+using ZhangPu.Gov.Logical;
+
+///
+/// utils 的摘要说明
+///
+public class PageBase : PagePublic
+{
+ public PageBase()
+ {
+
+ }
+
+
+
+ // protected LEmployee lem;
+ // const string DefaultPage = "~/index.aspx";
+ // const string HomePage = "~/Desktop.aspx";
+
+ public void CheckAuthority()
+ {
+ if (checkCloseIE()) return;
+
+ string requestPage = Request.AppRelativeCurrentExecutionFilePath + Request.Url.Query;
+ requestPage = requestPage.ToUpper();
+ // if (DefaultPage.Equals(requestPage)) return; //起始页不做判断
+ if (DefaultPage.ToUpper() == requestPage) return; //起始页不做判断
+
+ if (lem == null)
+ {
+ logobj.LoginLog(string.Empty,"lem is null");
+ Response.Redirect(DefaultPage);
+ }
+ if (HomePage.ToUpper() == requestPage) return;
+ if (lem.GetEmployee.em_account == "Root") //内建管理员
+ {
+
+ return;
+ }
+
+ if (lem.AuthList.Contains(requestPage)) return;
+ if (!new LRoleAuthority().GetPublicAuthorityList().Contains(requestPage))
+ {
+ logobj.RequestPageLog();
+
+ logobj.LoginLog(lem.GetEmployee.em_account ,"NoAccess!");
+
+ Response.Redirect(DefaultPage);
+ }
+
+ }
+
+ protected override void OnPreInit(EventArgs e)
+ {
+
+ base.OnPreInit(e);
+
+ CheckAuthority();
+
+ }
+ bool checkCloseIE()
+ {
+ if (!string.IsNullOrEmpty(Request.QueryString["___command"]))
+ {
+ string cmd = Request.QueryString["___command"];
+ if (cmd == "ClearSession")
+ {
+ if ((Session["CurrentUser"] != null))
+ {
+
+ if (System.Configuration.ConfigurationManager.AppSettings["sessionstate"] != "InProc")
+ if (Session["CurrentUserId"] != null)
+ {
+ // ((ArrayList)Application["userlst"]).Remove(Session["CurrentUserAccount"].ToString());
+ myLog.RequestLog logobj = new myLog.RequestLog();
+ logobj.LogoutLog(int.Parse(Session["CurrentUserId"].ToString()));
+ }
+ }
+ Session.Abandon(); //清空Session, all sessions will be clear ? no kiding, it will obsolete the current session.
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/App_Code/.svn/text-base/PagePublic.cs.svn-base b/App_Code/.svn/text-base/PagePublic.cs.svn-base
new file mode 100644
index 0000000..f64f45c
--- /dev/null
+++ b/App_Code/.svn/text-base/PagePublic.cs.svn-base
@@ -0,0 +1,26 @@
+using System;
+using System.Web.UI;
+using ZhangPu.Gov.Logical;
+
+///
+/// PagePublic 的摘要说明
+///
+public class PagePublic : Page
+{
+ protected LEmployee lem;
+ protected const string DefaultPage = "~/index.aspx";
+ protected const string HomePage = "~/Desktop.aspx";
+ protected myLog.RequestLog logobj;
+ public PagePublic()
+ {
+
+ }
+ protected override void OnPreInit(EventArgs e)
+ {
+ lem = (LEmployee)Session["CurrentUser"];
+
+ base.OnPreInit(e);
+ logobj = new myLog.RequestLog();
+ logobj.RequestPageLog();
+ }
+}
diff --git a/App_Code/.svn/text-base/SessionEndModule.cs.svn-base b/App_Code/.svn/text-base/SessionEndModule.cs.svn-base
new file mode 100644
index 0000000..328a35b
--- /dev/null
+++ b/App_Code/.svn/text-base/SessionEndModule.cs.svn-base
@@ -0,0 +1,151 @@
+using System;
+using System.Collections;
+using System.Diagnostics;
+using System.IO;
+
+using System.Web;
+using System.Web.Caching;
+using System.Web.SessionState;
+using System.Web.UI;
+
+namespace view.App_Code
+{
+ ///
+ /// When an ASP.NET State Server other than InProc, the Session_End event
+ /// does not get fired. This is an HttpModule which uses some workarounds
+ /// and fires a static event when a session ends, with the value of a single
+ /// configurable session variable in the event arguments.
+ ///
+ public class SessionEndModule : IHttpModule
+ {
+ #region Private Variables
+
+ private HttpApplication m_HttpApplication;
+ private static string m_SessionObjectKey;
+
+ #endregion
+
+ #region Accessors
+
+ ///
+ /// This is the key of the item in the session which should be returned
+ /// in the SessionEnd event (as the SessionObject).
+ ///
+ ///
+ /// If you're storing the user ID in the session, under a key called 'UserId'
+ /// and need to do something with it in the SessionEnd event, you would set
+ /// this to 'UserId', which would cause the value of the session key called
+ /// 'UserId' to be returned.
+ ///
+ public static string SessionObjectKey
+ {
+ get
+ {
+ return m_SessionObjectKey;
+ }
+ set
+ {
+ m_SessionObjectKey = value;
+ }
+ }
+
+ #endregion
+
+ #region IHttpModule Implementation
+
+ public void Init(HttpApplication context)
+ {
+ m_HttpApplication = context;
+ m_HttpApplication.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
+ }
+
+ public void Dispose()
+ {
+ // Do Nothing
+ }
+
+ #endregion
+
+ #region Events
+
+ ///
+ /// Event raised when the session ends
+ ///
+ public static event SessionEndEventHandler SessionEnd;
+
+ #endregion
+
+ private void OnPreRequestHandlerExecute(object sender, EventArgs e)
+ {
+ // We only want to update the session when an ASPX page is being viewed
+ // We're also doing this in the PreRequestHandler, as doing it elsewhere
+ // (like the PostRequestHandler) can cause some strange behaviour.
+
+ if (Path.GetExtension(m_HttpApplication.Context.Request.Path).ToLower() == ".aspx")
+ {
+ // Ensure we have a HttpContext
+ if (HttpContext.Current == null)
+ {
+ Debug.WriteLine("No current http context");
+ return;
+ }
+
+ // Get the current session
+ HttpSessionState currentSession = HttpContext.Current.Session;
+
+ // Ensure we have a current session
+ if (currentSession == null)
+ {
+ Debug.WriteLine("No current session");
+ return;
+ }
+
+ // Get the session timeout
+ TimeSpan sessionTimeout = new TimeSpan(0, 0, currentSession.Timeout, 0, 0);
+
+ // Get the object in the session we want to retrieve when the session times out
+ object sessionObject = currentSession[SessionObjectKey];
+
+ // Add the object to the cache with the current session id, and set a cache removal callback method
+ HttpContext.Current.Cache.Insert(currentSession.SessionID, sessionObject, null, DateTime.MaxValue, sessionTimeout, CacheItemPriority.NotRemovable, CacheItemRemovedCallbackMethod);
+ }
+ }
+
+ ///
+ /// This method is fired when an item is removed from the cache. It is used to detect when a cache item
+ /// expires, indicating that the session has expired, and fires the SessionEnd event.
+ ///
+ private void CacheItemRemovedCallbackMethod(string key, object value, CacheItemRemovedReason reason)
+ {
+ if (reason == CacheItemRemovedReason.Expired)
+ {
+ if (SessionEnd != null)
+ {
+ SessionEndedEventArgs e = new SessionEndedEventArgs(key, value);
+ SessionEnd(this, e);
+
+ }
+ }
+ }
+ }
+
+ ///
+ /// Event handler for handling the SessionEnd event
+ ///
+ public delegate void SessionEndEventHandler(object sender, SessionEndedEventArgs e);
+
+ ///
+ /// SessionEndedEventArgs for use in the SessionEnd event
+ ///
+ public class SessionEndedEventArgs : EventArgs
+ {
+ public readonly string SessionId;
+ public readonly object SessionObject;
+
+ public SessionEndedEventArgs(string sessionId, object sessionObject)
+ {
+ SessionId = sessionId;
+ SessionObject = sessionObject;
+ }
+ }
+}
\ No newline at end of file
diff --git a/App_Code/ExcelExp.cs b/App_Code/ExcelExp.cs
new file mode 100644
index 0000000..118e6ca
--- /dev/null
+++ b/App_Code/ExcelExp.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.IO;
+using System.Text;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+namespace view.App_Code
+{
+ ///
+ /// utils 的摘要说明
+ ///
+ public class ExcelExp
+ {
+ public ExcelExp()
+ {
+ //
+ // TODO: 在此处添加构造函数逻辑
+ //
+ }
+
+
+ public static void Export(GridView GridView1, DataView dv ,ScriptManager sm,Control Button1,string fileName, Page page )
+ {
+ sm.RegisterPostBackControl(Button1);
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count-1].Visible = false;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+
+
+ HttpContext.Current.Response.Charset = "GB2312";
+ HttpContext.Current.Response.ContentEncoding = Encoding.UTF7;
+ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", Encoding.UTF8).ToString());
+ HttpContext.Current.Response.ContentType = "application/ms-excel";
+ page.EnableViewState = false;
+ StringWriter tw = new StringWriter();
+ HtmlTextWriter hw = new HtmlTextWriter(tw);
+ GridView1.RenderControl(hw);
+ HttpContext.Current.Response.Write(tw.ToString());
+ HttpContext.Current.Response.End();
+
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count - 1].Visible = true;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/App_Code/PageBase.cs b/App_Code/PageBase.cs
new file mode 100644
index 0000000..3cdb3ee
--- /dev/null
+++ b/App_Code/PageBase.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+using DeiNiu.wms.Logical;
+
+///
+/// utils 的摘要说明
+///
+public class PageBase : PagePublic
+{
+ public PageBase()
+ {
+
+ }
+
+
+
+ // protected LEmployee lem;
+ // const string DefaultPage = "~/index.aspx";
+ // const string HomePage = "~/Desktop.aspx";
+
+ public void CheckAuthority()
+ {
+ if (checkCloseIE()) return;
+
+ string requestPage = Request.AppRelativeCurrentExecutionFilePath + Request.Url.Query;
+ requestPage = requestPage.ToUpper();
+ // if (DefaultPage.Equals(requestPage)) return; //起始页不做判断
+ if (DefaultPage.ToUpper() == requestPage) return; //起始页不做判断
+
+ if (lem == null)
+ {
+ //logobj.LoginLog(string.Empty,"lem is null");
+ Response.Redirect(DefaultPage);
+ }
+ if (HomePage.ToUpper() == requestPage) return;
+ if (lem.GetEmployee.em_account == "Root") //内建管理员
+ {
+
+ return;
+ }
+
+ if (lem.AuthList.Contains(requestPage)) return;
+ if (!new LRoleAuthority().GetPublicAuthorityList().Contains(requestPage))
+ {
+ // logobj.RequestPageLog();
+
+ // logobj.LoginLog(lem.GetEmployee.em_account ,"NoAccess!");
+
+ Response.Redirect(DefaultPage);
+ }
+
+ }
+
+ protected override void OnPreInit(EventArgs e)
+ {
+
+ base.OnPreInit(e);
+
+ CheckAuthority();
+
+ }
+ bool checkCloseIE()
+ {
+ if (!string.IsNullOrEmpty(Request.QueryString["___command"]))
+ {
+ string cmd = Request.QueryString["___command"];
+ if (cmd == "ClearSession")
+ {
+ if ((Session["CurrentUser"] != null))
+ {
+
+ if (System.Configuration.ConfigurationManager.AppSettings["sessionstate"] != "InProc")
+ if (Session["CurrentUserId"] != null)
+ {
+ // ((ArrayList)Application["userlst"]).Remove(Session["CurrentUserAccount"].ToString());
+ DeiNiu.RequestLog logobj = new DeiNiu.RequestLog();
+ // logobj.LogoutLog(int.Parse(Session["CurrentUserId"].ToString()));
+ }
+ }
+ Session.Abandon(); //清空Session, all sessions will be clear ? no kiding, it will obsolete the current session.
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/App_Code/PagePublic.cs b/App_Code/PagePublic.cs
new file mode 100644
index 0000000..5fee555
--- /dev/null
+++ b/App_Code/PagePublic.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Web.UI;
+using DeiNiu.wms.Logical;
+
+///
+/// PagePublic 的摘要说明
+///
+public class PagePublic : Page
+{
+ protected LEmployee lem;
+ protected const string DefaultPage = "~/index.aspx";
+ protected const string HomePage = "~/Desktop.aspx";
+ protected DeiNiu.RequestLog logobj;
+ public PagePublic()
+ {
+
+ }
+ protected override void OnPreInit(EventArgs e)
+ {
+ lem = (LEmployee)Session["CurrentUser"];
+
+ base.OnPreInit(e);
+ logobj = new DeiNiu.RequestLog();
+ logobj.RequestPageLog();
+ }
+}
diff --git a/App_Code/SessionEndModule.cs b/App_Code/SessionEndModule.cs
new file mode 100644
index 0000000..328a35b
--- /dev/null
+++ b/App_Code/SessionEndModule.cs
@@ -0,0 +1,151 @@
+using System;
+using System.Collections;
+using System.Diagnostics;
+using System.IO;
+
+using System.Web;
+using System.Web.Caching;
+using System.Web.SessionState;
+using System.Web.UI;
+
+namespace view.App_Code
+{
+ ///
+ /// When an ASP.NET State Server other than InProc, the Session_End event
+ /// does not get fired. This is an HttpModule which uses some workarounds
+ /// and fires a static event when a session ends, with the value of a single
+ /// configurable session variable in the event arguments.
+ ///
+ public class SessionEndModule : IHttpModule
+ {
+ #region Private Variables
+
+ private HttpApplication m_HttpApplication;
+ private static string m_SessionObjectKey;
+
+ #endregion
+
+ #region Accessors
+
+ ///
+ /// This is the key of the item in the session which should be returned
+ /// in the SessionEnd event (as the SessionObject).
+ ///
+ ///
+ /// If you're storing the user ID in the session, under a key called 'UserId'
+ /// and need to do something with it in the SessionEnd event, you would set
+ /// this to 'UserId', which would cause the value of the session key called
+ /// 'UserId' to be returned.
+ ///
+ public static string SessionObjectKey
+ {
+ get
+ {
+ return m_SessionObjectKey;
+ }
+ set
+ {
+ m_SessionObjectKey = value;
+ }
+ }
+
+ #endregion
+
+ #region IHttpModule Implementation
+
+ public void Init(HttpApplication context)
+ {
+ m_HttpApplication = context;
+ m_HttpApplication.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
+ }
+
+ public void Dispose()
+ {
+ // Do Nothing
+ }
+
+ #endregion
+
+ #region Events
+
+ ///
+ /// Event raised when the session ends
+ ///
+ public static event SessionEndEventHandler SessionEnd;
+
+ #endregion
+
+ private void OnPreRequestHandlerExecute(object sender, EventArgs e)
+ {
+ // We only want to update the session when an ASPX page is being viewed
+ // We're also doing this in the PreRequestHandler, as doing it elsewhere
+ // (like the PostRequestHandler) can cause some strange behaviour.
+
+ if (Path.GetExtension(m_HttpApplication.Context.Request.Path).ToLower() == ".aspx")
+ {
+ // Ensure we have a HttpContext
+ if (HttpContext.Current == null)
+ {
+ Debug.WriteLine("No current http context");
+ return;
+ }
+
+ // Get the current session
+ HttpSessionState currentSession = HttpContext.Current.Session;
+
+ // Ensure we have a current session
+ if (currentSession == null)
+ {
+ Debug.WriteLine("No current session");
+ return;
+ }
+
+ // Get the session timeout
+ TimeSpan sessionTimeout = new TimeSpan(0, 0, currentSession.Timeout, 0, 0);
+
+ // Get the object in the session we want to retrieve when the session times out
+ object sessionObject = currentSession[SessionObjectKey];
+
+ // Add the object to the cache with the current session id, and set a cache removal callback method
+ HttpContext.Current.Cache.Insert(currentSession.SessionID, sessionObject, null, DateTime.MaxValue, sessionTimeout, CacheItemPriority.NotRemovable, CacheItemRemovedCallbackMethod);
+ }
+ }
+
+ ///
+ /// This method is fired when an item is removed from the cache. It is used to detect when a cache item
+ /// expires, indicating that the session has expired, and fires the SessionEnd event.
+ ///
+ private void CacheItemRemovedCallbackMethod(string key, object value, CacheItemRemovedReason reason)
+ {
+ if (reason == CacheItemRemovedReason.Expired)
+ {
+ if (SessionEnd != null)
+ {
+ SessionEndedEventArgs e = new SessionEndedEventArgs(key, value);
+ SessionEnd(this, e);
+
+ }
+ }
+ }
+ }
+
+ ///
+ /// Event handler for handling the SessionEnd event
+ ///
+ public delegate void SessionEndEventHandler(object sender, SessionEndedEventArgs e);
+
+ ///
+ /// SessionEndedEventArgs for use in the SessionEnd event
+ ///
+ public class SessionEndedEventArgs : EventArgs
+ {
+ public readonly string SessionId;
+ public readonly object SessionObject;
+
+ public SessionEndedEventArgs(string sessionId, object sessionObject)
+ {
+ SessionId = sessionId;
+ SessionObject = sessionObject;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Bin/AjaxControlToolkit.dll b/Bin/AjaxControlToolkit.dll
new file mode 100644
index 0000000..4fbcfc9
Binary files /dev/null and b/Bin/AjaxControlToolkit.dll differ
diff --git a/Bin/AjaxControlToolkit.dll.refresh b/Bin/AjaxControlToolkit.dll.refresh
new file mode 100644
index 0000000..3c4c615
Binary files /dev/null and b/Bin/AjaxControlToolkit.dll.refresh differ
diff --git a/Bin/App_Code/.svn/entries b/Bin/App_Code/.svn/entries
new file mode 100644
index 0000000..c0dedaf
--- /dev/null
+++ b/Bin/App_Code/.svn/entries
@@ -0,0 +1,164 @@
+10
+
+dir
+8
+file:///D:/Repositories/ZhangPu/trunk/view/App_Code
+file:///D:/Repositories/ZhangPu
+
+
+
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+69712cd5-45d9-e244-acd6-b3e9c1159652
+
+PagePublic.cs
+file
+
+
+
+
+2011-04-01T02:51:10.289868Z
+88adefccb355a757a198d9d5710b8905
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+637
+
+ExcelExp.cs
+file
+
+
+
+
+2011-04-01T02:51:10.305493Z
+622cd19125108d2405c68fbaa5dd594a
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1888
+
+SessionEndModule.cs
+file
+
+
+
+
+2011-04-01T02:51:10.305493Z
+afc00bfe8b5a4c00a5defa6a1221b0fb
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5243
+
+PageBase.cs
+file
+
+
+
+
+2011-04-01T02:51:10.321118Z
+ada92b7d54cfb24aba200636f6b94af8
+2011-03-31T02:53:16.230701Z
+2
+mwang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2850
+
diff --git a/Bin/App_Code/.svn/text-base/ExcelExp.cs.svn-base b/Bin/App_Code/.svn/text-base/ExcelExp.cs.svn-base
new file mode 100644
index 0000000..118e6ca
--- /dev/null
+++ b/Bin/App_Code/.svn/text-base/ExcelExp.cs.svn-base
@@ -0,0 +1,55 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.IO;
+using System.Text;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+namespace view.App_Code
+{
+ ///
+ /// utils 的摘要说明
+ ///
+ public class ExcelExp
+ {
+ public ExcelExp()
+ {
+ //
+ // TODO: 在此处添加构造函数逻辑
+ //
+ }
+
+
+ public static void Export(GridView GridView1, DataView dv ,ScriptManager sm,Control Button1,string fileName, Page page )
+ {
+ sm.RegisterPostBackControl(Button1);
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count-1].Visible = false;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+
+
+ HttpContext.Current.Response.Charset = "GB2312";
+ HttpContext.Current.Response.ContentEncoding = Encoding.UTF7;
+ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", Encoding.UTF8).ToString());
+ HttpContext.Current.Response.ContentType = "application/ms-excel";
+ page.EnableViewState = false;
+ StringWriter tw = new StringWriter();
+ HtmlTextWriter hw = new HtmlTextWriter(tw);
+ GridView1.RenderControl(hw);
+ HttpContext.Current.Response.Write(tw.ToString());
+ HttpContext.Current.Response.End();
+
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count - 1].Visible = true;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Bin/App_Code/.svn/text-base/PageBase.cs.svn-base b/Bin/App_Code/.svn/text-base/PageBase.cs.svn-base
new file mode 100644
index 0000000..8245cc0
--- /dev/null
+++ b/Bin/App_Code/.svn/text-base/PageBase.cs.svn-base
@@ -0,0 +1,94 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+using ZhangPu.Gov.Logical;
+
+///
+/// utils 的摘要说明
+///
+public class PageBase : PagePublic
+{
+ public PageBase()
+ {
+
+ }
+
+
+
+ // protected LEmployee lem;
+ // const string DefaultPage = "~/index.aspx";
+ // const string HomePage = "~/Desktop.aspx";
+
+ public void CheckAuthority()
+ {
+ if (checkCloseIE()) return;
+
+ string requestPage = Request.AppRelativeCurrentExecutionFilePath + Request.Url.Query;
+ requestPage = requestPage.ToUpper();
+ // if (DefaultPage.Equals(requestPage)) return; //起始页不做判断
+ if (DefaultPage.ToUpper() == requestPage) return; //起始页不做判断
+
+ if (lem == null)
+ {
+ logobj.LoginLog(string.Empty,"lem is null");
+ Response.Redirect(DefaultPage);
+ }
+ if (HomePage.ToUpper() == requestPage) return;
+ if (lem.GetEmployee.em_account == "Root") //内建管理员
+ {
+
+ return;
+ }
+
+ if (lem.AuthList.Contains(requestPage)) return;
+ if (!new LRoleAuthority().GetPublicAuthorityList().Contains(requestPage))
+ {
+ logobj.RequestPageLog();
+
+ logobj.LoginLog(lem.GetEmployee.em_account ,"NoAccess!");
+
+ Response.Redirect(DefaultPage);
+ }
+
+ }
+
+ protected override void OnPreInit(EventArgs e)
+ {
+
+ base.OnPreInit(e);
+
+ CheckAuthority();
+
+ }
+ bool checkCloseIE()
+ {
+ if (!string.IsNullOrEmpty(Request.QueryString["___command"]))
+ {
+ string cmd = Request.QueryString["___command"];
+ if (cmd == "ClearSession")
+ {
+ if ((Session["CurrentUser"] != null))
+ {
+
+ if (System.Configuration.ConfigurationManager.AppSettings["sessionstate"] != "InProc")
+ if (Session["CurrentUserId"] != null)
+ {
+ // ((ArrayList)Application["userlst"]).Remove(Session["CurrentUserAccount"].ToString());
+ myLog.RequestLog logobj = new myLog.RequestLog();
+ logobj.LogoutLog(int.Parse(Session["CurrentUserId"].ToString()));
+ }
+ }
+ Session.Abandon(); //清空Session, all sessions will be clear ? no kiding, it will obsolete the current session.
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/Bin/App_Code/.svn/text-base/PagePublic.cs.svn-base b/Bin/App_Code/.svn/text-base/PagePublic.cs.svn-base
new file mode 100644
index 0000000..f64f45c
--- /dev/null
+++ b/Bin/App_Code/.svn/text-base/PagePublic.cs.svn-base
@@ -0,0 +1,26 @@
+using System;
+using System.Web.UI;
+using ZhangPu.Gov.Logical;
+
+///
+/// PagePublic 的摘要说明
+///
+public class PagePublic : Page
+{
+ protected LEmployee lem;
+ protected const string DefaultPage = "~/index.aspx";
+ protected const string HomePage = "~/Desktop.aspx";
+ protected myLog.RequestLog logobj;
+ public PagePublic()
+ {
+
+ }
+ protected override void OnPreInit(EventArgs e)
+ {
+ lem = (LEmployee)Session["CurrentUser"];
+
+ base.OnPreInit(e);
+ logobj = new myLog.RequestLog();
+ logobj.RequestPageLog();
+ }
+}
diff --git a/Bin/App_Code/.svn/text-base/SessionEndModule.cs.svn-base b/Bin/App_Code/.svn/text-base/SessionEndModule.cs.svn-base
new file mode 100644
index 0000000..328a35b
--- /dev/null
+++ b/Bin/App_Code/.svn/text-base/SessionEndModule.cs.svn-base
@@ -0,0 +1,151 @@
+using System;
+using System.Collections;
+using System.Diagnostics;
+using System.IO;
+
+using System.Web;
+using System.Web.Caching;
+using System.Web.SessionState;
+using System.Web.UI;
+
+namespace view.App_Code
+{
+ ///
+ /// When an ASP.NET State Server other than InProc, the Session_End event
+ /// does not get fired. This is an HttpModule which uses some workarounds
+ /// and fires a static event when a session ends, with the value of a single
+ /// configurable session variable in the event arguments.
+ ///
+ public class SessionEndModule : IHttpModule
+ {
+ #region Private Variables
+
+ private HttpApplication m_HttpApplication;
+ private static string m_SessionObjectKey;
+
+ #endregion
+
+ #region Accessors
+
+ ///
+ /// This is the key of the item in the session which should be returned
+ /// in the SessionEnd event (as the SessionObject).
+ ///
+ ///
+ /// If you're storing the user ID in the session, under a key called 'UserId'
+ /// and need to do something with it in the SessionEnd event, you would set
+ /// this to 'UserId', which would cause the value of the session key called
+ /// 'UserId' to be returned.
+ ///
+ public static string SessionObjectKey
+ {
+ get
+ {
+ return m_SessionObjectKey;
+ }
+ set
+ {
+ m_SessionObjectKey = value;
+ }
+ }
+
+ #endregion
+
+ #region IHttpModule Implementation
+
+ public void Init(HttpApplication context)
+ {
+ m_HttpApplication = context;
+ m_HttpApplication.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
+ }
+
+ public void Dispose()
+ {
+ // Do Nothing
+ }
+
+ #endregion
+
+ #region Events
+
+ ///
+ /// Event raised when the session ends
+ ///
+ public static event SessionEndEventHandler SessionEnd;
+
+ #endregion
+
+ private void OnPreRequestHandlerExecute(object sender, EventArgs e)
+ {
+ // We only want to update the session when an ASPX page is being viewed
+ // We're also doing this in the PreRequestHandler, as doing it elsewhere
+ // (like the PostRequestHandler) can cause some strange behaviour.
+
+ if (Path.GetExtension(m_HttpApplication.Context.Request.Path).ToLower() == ".aspx")
+ {
+ // Ensure we have a HttpContext
+ if (HttpContext.Current == null)
+ {
+ Debug.WriteLine("No current http context");
+ return;
+ }
+
+ // Get the current session
+ HttpSessionState currentSession = HttpContext.Current.Session;
+
+ // Ensure we have a current session
+ if (currentSession == null)
+ {
+ Debug.WriteLine("No current session");
+ return;
+ }
+
+ // Get the session timeout
+ TimeSpan sessionTimeout = new TimeSpan(0, 0, currentSession.Timeout, 0, 0);
+
+ // Get the object in the session we want to retrieve when the session times out
+ object sessionObject = currentSession[SessionObjectKey];
+
+ // Add the object to the cache with the current session id, and set a cache removal callback method
+ HttpContext.Current.Cache.Insert(currentSession.SessionID, sessionObject, null, DateTime.MaxValue, sessionTimeout, CacheItemPriority.NotRemovable, CacheItemRemovedCallbackMethod);
+ }
+ }
+
+ ///
+ /// This method is fired when an item is removed from the cache. It is used to detect when a cache item
+ /// expires, indicating that the session has expired, and fires the SessionEnd event.
+ ///
+ private void CacheItemRemovedCallbackMethod(string key, object value, CacheItemRemovedReason reason)
+ {
+ if (reason == CacheItemRemovedReason.Expired)
+ {
+ if (SessionEnd != null)
+ {
+ SessionEndedEventArgs e = new SessionEndedEventArgs(key, value);
+ SessionEnd(this, e);
+
+ }
+ }
+ }
+ }
+
+ ///
+ /// Event handler for handling the SessionEnd event
+ ///
+ public delegate void SessionEndEventHandler(object sender, SessionEndedEventArgs e);
+
+ ///
+ /// SessionEndedEventArgs for use in the SessionEnd event
+ ///
+ public class SessionEndedEventArgs : EventArgs
+ {
+ public readonly string SessionId;
+ public readonly object SessionObject;
+
+ public SessionEndedEventArgs(string sessionId, object sessionObject)
+ {
+ SessionId = sessionId;
+ SessionObject = sessionObject;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Bin/App_Code/ExcelExp.cs b/Bin/App_Code/ExcelExp.cs
new file mode 100644
index 0000000..118e6ca
--- /dev/null
+++ b/Bin/App_Code/ExcelExp.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.IO;
+using System.Text;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+namespace view.App_Code
+{
+ ///
+ /// utils 的摘要说明
+ ///
+ public class ExcelExp
+ {
+ public ExcelExp()
+ {
+ //
+ // TODO: 在此处添加构造函数逻辑
+ //
+ }
+
+
+ public static void Export(GridView GridView1, DataView dv ,ScriptManager sm,Control Button1,string fileName, Page page )
+ {
+ sm.RegisterPostBackControl(Button1);
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count-1].Visible = false;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+
+
+ HttpContext.Current.Response.Charset = "GB2312";
+ HttpContext.Current.Response.ContentEncoding = Encoding.UTF7;
+ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", Encoding.UTF8).ToString());
+ HttpContext.Current.Response.ContentType = "application/ms-excel";
+ page.EnableViewState = false;
+ StringWriter tw = new StringWriter();
+ HtmlTextWriter hw = new HtmlTextWriter(tw);
+ GridView1.RenderControl(hw);
+ HttpContext.Current.Response.Write(tw.ToString());
+ HttpContext.Current.Response.End();
+
+ GridView1.AllowPaging = false;
+ GridView1.Columns[GridView1.Columns.Count - 1].Visible = true;
+ GridView1.DataSource = dv;
+ GridView1.DataBind();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Bin/App_Code/PageBase.cs b/Bin/App_Code/PageBase.cs
new file mode 100644
index 0000000..dd223b1
--- /dev/null
+++ b/Bin/App_Code/PageBase.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+using DeiNiu.wms.Logical;
+
+///
+/// utils 的摘要说明
+///
+public class PageBase : PagePublic
+{
+ public PageBase()
+ {
+
+ }
+
+
+
+ // protected LEmployee lem;
+ // const string DefaultPage = "~/index.aspx";
+ // const string HomePage = "~/Desktop.aspx";
+
+ public void CheckAuthority()
+ {
+ if (checkCloseIE()) return;
+
+ string requestPage = Request.AppRelativeCurrentExecutionFilePath + Request.Url.Query;
+ requestPage = requestPage.ToUpper();
+ // if (DefaultPage.Equals(requestPage)) return; //起始页不做判断
+ if (DefaultPage.ToUpper() == requestPage) return; //起始页不做判断
+
+ if (lem == null)
+ {
+ logobj.LoginLog(string.Empty,"lem is null");
+ Response.Redirect(DefaultPage);
+ }
+ if (HomePage.ToUpper() == requestPage) return;
+ if (lem.GetEmployee.em_account == "Root") //内建管理员
+ {
+
+ return;
+ }
+
+ if (lem.AuthList.Contains(requestPage)) return;
+ if (!new LRoleAuthority().GetPublicAuthorityList().Contains(requestPage))
+ {
+ logobj.RequestPageLog();
+
+ logobj.LoginLog(lem.GetEmployee.em_account ,"NoAccess!");
+
+ Response.Redirect(DefaultPage);
+ }
+
+ }
+
+ protected override void OnPreInit(EventArgs e)
+ {
+
+ base.OnPreInit(e);
+
+ CheckAuthority();
+
+ }
+ bool checkCloseIE()
+ {
+ if (!string.IsNullOrEmpty(Request.QueryString["___command"]))
+ {
+ string cmd = Request.QueryString["___command"];
+ if (cmd == "ClearSession")
+ {
+ if ((Session["CurrentUser"] != null))
+ {
+
+ if (System.Configuration.ConfigurationManager.AppSettings["sessionstate"] != "InProc")
+ if (Session["CurrentUserId"] != null)
+ {
+ // ((ArrayList)Application["userlst"]).Remove(Session["CurrentUserAccount"].ToString());
+ DeiNiu.RequestLog logobj = new DeiNiu.RequestLog();
+ logobj.LogoutLog(int.Parse(Session["CurrentUserId"].ToString()));
+ }
+ }
+ Session.Abandon(); //清空Session, all sessions will be clear ? no kiding, it will obsolete the current session.
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/Bin/App_Code/PagePublic.cs b/Bin/App_Code/PagePublic.cs
new file mode 100644
index 0000000..5fee555
--- /dev/null
+++ b/Bin/App_Code/PagePublic.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Web.UI;
+using DeiNiu.wms.Logical;
+
+///
+/// PagePublic 的摘要说明
+///
+public class PagePublic : Page
+{
+ protected LEmployee lem;
+ protected const string DefaultPage = "~/index.aspx";
+ protected const string HomePage = "~/Desktop.aspx";
+ protected DeiNiu.RequestLog logobj;
+ public PagePublic()
+ {
+
+ }
+ protected override void OnPreInit(EventArgs e)
+ {
+ lem = (LEmployee)Session["CurrentUser"];
+
+ base.OnPreInit(e);
+ logobj = new DeiNiu.RequestLog();
+ logobj.RequestPageLog();
+ }
+}
diff --git a/Bin/App_Code/SessionEndModule.cs b/Bin/App_Code/SessionEndModule.cs
new file mode 100644
index 0000000..328a35b
--- /dev/null
+++ b/Bin/App_Code/SessionEndModule.cs
@@ -0,0 +1,151 @@
+using System;
+using System.Collections;
+using System.Diagnostics;
+using System.IO;
+
+using System.Web;
+using System.Web.Caching;
+using System.Web.SessionState;
+using System.Web.UI;
+
+namespace view.App_Code
+{
+ ///
+ /// When an ASP.NET State Server other than InProc, the Session_End event
+ /// does not get fired. This is an HttpModule which uses some workarounds
+ /// and fires a static event when a session ends, with the value of a single
+ /// configurable session variable in the event arguments.
+ ///
+ public class SessionEndModule : IHttpModule
+ {
+ #region Private Variables
+
+ private HttpApplication m_HttpApplication;
+ private static string m_SessionObjectKey;
+
+ #endregion
+
+ #region Accessors
+
+ ///
+ /// This is the key of the item in the session which should be returned
+ /// in the SessionEnd event (as the SessionObject).
+ ///
+ ///
+ /// If you're storing the user ID in the session, under a key called 'UserId'
+ /// and need to do something with it in the SessionEnd event, you would set
+ /// this to 'UserId', which would cause the value of the session key called
+ /// 'UserId' to be returned.
+ ///
+ public static string SessionObjectKey
+ {
+ get
+ {
+ return m_SessionObjectKey;
+ }
+ set
+ {
+ m_SessionObjectKey = value;
+ }
+ }
+
+ #endregion
+
+ #region IHttpModule Implementation
+
+ public void Init(HttpApplication context)
+ {
+ m_HttpApplication = context;
+ m_HttpApplication.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
+ }
+
+ public void Dispose()
+ {
+ // Do Nothing
+ }
+
+ #endregion
+
+ #region Events
+
+ ///
+ /// Event raised when the session ends
+ ///
+ public static event SessionEndEventHandler SessionEnd;
+
+ #endregion
+
+ private void OnPreRequestHandlerExecute(object sender, EventArgs e)
+ {
+ // We only want to update the session when an ASPX page is being viewed
+ // We're also doing this in the PreRequestHandler, as doing it elsewhere
+ // (like the PostRequestHandler) can cause some strange behaviour.
+
+ if (Path.GetExtension(m_HttpApplication.Context.Request.Path).ToLower() == ".aspx")
+ {
+ // Ensure we have a HttpContext
+ if (HttpContext.Current == null)
+ {
+ Debug.WriteLine("No current http context");
+ return;
+ }
+
+ // Get the current session
+ HttpSessionState currentSession = HttpContext.Current.Session;
+
+ // Ensure we have a current session
+ if (currentSession == null)
+ {
+ Debug.WriteLine("No current session");
+ return;
+ }
+
+ // Get the session timeout
+ TimeSpan sessionTimeout = new TimeSpan(0, 0, currentSession.Timeout, 0, 0);
+
+ // Get the object in the session we want to retrieve when the session times out
+ object sessionObject = currentSession[SessionObjectKey];
+
+ // Add the object to the cache with the current session id, and set a cache removal callback method
+ HttpContext.Current.Cache.Insert(currentSession.SessionID, sessionObject, null, DateTime.MaxValue, sessionTimeout, CacheItemPriority.NotRemovable, CacheItemRemovedCallbackMethod);
+ }
+ }
+
+ ///
+ /// This method is fired when an item is removed from the cache. It is used to detect when a cache item
+ /// expires, indicating that the session has expired, and fires the SessionEnd event.
+ ///
+ private void CacheItemRemovedCallbackMethod(string key, object value, CacheItemRemovedReason reason)
+ {
+ if (reason == CacheItemRemovedReason.Expired)
+ {
+ if (SessionEnd != null)
+ {
+ SessionEndedEventArgs e = new SessionEndedEventArgs(key, value);
+ SessionEnd(this, e);
+
+ }
+ }
+ }
+ }
+
+ ///
+ /// Event handler for handling the SessionEnd event
+ ///
+ public delegate void SessionEndEventHandler(object sender, SessionEndedEventArgs e);
+
+ ///
+ /// SessionEndedEventArgs for use in the SessionEnd event
+ ///
+ public class SessionEndedEventArgs : EventArgs
+ {
+ public readonly string SessionId;
+ public readonly object SessionObject;
+
+ public SessionEndedEventArgs(string sessionId, object sessionObject)
+ {
+ SessionId = sessionId;
+ SessionObject = sessionObject;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Bin/App_Licenses.dll b/Bin/App_Licenses.dll
new file mode 100644
index 0000000..24e0393
Binary files /dev/null and b/Bin/App_Licenses.dll differ
diff --git a/Bin/BaseObject.dll b/Bin/BaseObject.dll
new file mode 100644
index 0000000..cf707a2
Binary files /dev/null and b/Bin/BaseObject.dll differ
diff --git a/Bin/BaseObject.pdb b/Bin/BaseObject.pdb
new file mode 100644
index 0000000..d25c6ec
Binary files /dev/null and b/Bin/BaseObject.pdb differ
diff --git a/Bin/DevExpress.Charts.v16.2.Core.dll b/Bin/DevExpress.Charts.v16.2.Core.dll
new file mode 100644
index 0000000..cda848a
Binary files /dev/null and b/Bin/DevExpress.Charts.v16.2.Core.dll differ
diff --git a/Bin/DevExpress.Data.v16.2.dll b/Bin/DevExpress.Data.v16.2.dll
new file mode 100644
index 0000000..f84bb55
Binary files /dev/null and b/Bin/DevExpress.Data.v16.2.dll differ
diff --git a/Bin/DevExpress.Printing.v16.2.Core.dll b/Bin/DevExpress.Printing.v16.2.Core.dll
new file mode 100644
index 0000000..ac66d44
Binary files /dev/null and b/Bin/DevExpress.Printing.v16.2.Core.dll differ
diff --git a/Bin/DevExpress.Web.v16.2.dll b/Bin/DevExpress.Web.v16.2.dll
new file mode 100644
index 0000000..5d8359d
Binary files /dev/null and b/Bin/DevExpress.Web.v16.2.dll differ
diff --git a/Bin/DevExpress.XtraCharts.v16.2.Web.dll b/Bin/DevExpress.XtraCharts.v16.2.Web.dll
new file mode 100644
index 0000000..4c60a2b
Binary files /dev/null and b/Bin/DevExpress.XtraCharts.v16.2.Web.dll differ
diff --git a/Bin/DevExpress.XtraCharts.v16.2.dll b/Bin/DevExpress.XtraCharts.v16.2.dll
new file mode 100644
index 0000000..6e3d0af
Binary files /dev/null and b/Bin/DevExpress.XtraCharts.v16.2.dll differ
diff --git a/Bin/LitJSON.dll b/Bin/LitJSON.dll
new file mode 100644
index 0000000..9cc439d
Binary files /dev/null and b/Bin/LitJSON.dll differ
diff --git a/Bin/LitJSON.dll.refresh b/Bin/LitJSON.dll.refresh
new file mode 100644
index 0000000..53793ef
Binary files /dev/null and b/Bin/LitJSON.dll.refresh differ
diff --git a/Bin/Logical.dll b/Bin/Logical.dll
new file mode 100644
index 0000000..b1f2277
Binary files /dev/null and b/Bin/Logical.dll differ
diff --git a/Bin/Logical.pdb b/Bin/Logical.pdb
new file mode 100644
index 0000000..36c1593
Binary files /dev/null and b/Bin/Logical.pdb differ
diff --git a/Bin/Model.dll b/Bin/Model.dll
new file mode 100644
index 0000000..2f14946
Binary files /dev/null and b/Bin/Model.dll differ
diff --git a/Bin/Model.pdb b/Bin/Model.pdb
new file mode 100644
index 0000000..d1284d6
Binary files /dev/null and b/Bin/Model.pdb differ
diff --git a/Bin/Utils.dll b/Bin/Utils.dll
new file mode 100644
index 0000000..b1b97aa
Binary files /dev/null and b/Bin/Utils.dll differ
diff --git a/Bin/Utils.pdb b/Bin/Utils.pdb
new file mode 100644
index 0000000..179022f
Binary files /dev/null and b/Bin/Utils.pdb differ
diff --git a/Bin/log4net.dll b/Bin/log4net.dll
new file mode 100644
index 0000000..a4af9d6
Binary files /dev/null and b/Bin/log4net.dll differ
diff --git a/Bin/log4net.pdb b/Bin/log4net.pdb
new file mode 100644
index 0000000..4ec3e46
Binary files /dev/null and b/Bin/log4net.pdb differ
diff --git a/Bin/log4net.xml b/Bin/log4net.xml
new file mode 100644
index 0000000..df56743
--- /dev/null
+++ b/Bin/log4net.xml
@@ -0,0 +1,32464 @@
+
+
+
+ log4net
+
+
+
+
+ Appender that logs to a database.
+
+
+
+ appends logging events to a table within a
+ database. The appender can be configured to specify the connection
+ string by setting the property.
+ The connection type (provider) can be specified by setting the
+ property. For more information on database connection strings for
+ your specific database see http://www.connectionstrings.com/.
+
+
+ Records are written into the database either using a prepared
+ statement or a stored procedure. The property
+ is set to (System.Data.CommandType.Text) to specify a prepared statement
+ or to (System.Data.CommandType.StoredProcedure) to specify a stored
+ procedure.
+
+
+ The prepared statement text or the name of the stored procedure
+ must be set in the property.
+
+
+ The prepared statement or stored procedure can take a number
+ of parameters. Parameters are added using the
+ method. This adds a single to the
+ ordered list of parameters. The
+ type may be subclassed if required to provide database specific
+ functionality. The specifies
+ the parameter name, database type, size, and how the value should
+ be generated using a .
+
+
+
+ An example of a SQL Server table that could be logged to:
+
+ CREATE TABLE [dbo].[Log] (
+ [ID] [int] IDENTITY (1, 1) NOT NULL ,
+ [Date] [datetime] NOT NULL ,
+ [Thread] [varchar] (255) NOT NULL ,
+ [Level] [varchar] (20) NOT NULL ,
+ [Logger] [varchar] (255) NOT NULL ,
+ [Message] [varchar] (4000) NOT NULL
+ ) ON [PRIMARY]
+
+
+
+ An example configuration to log to the above table:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Julian Biddle
+ Nicko Cadell
+ Gert Driesen
+ Lance Nehring
+
+
+
+ Abstract base class implementation of that
+ buffers events in a fixed size buffer.
+
+
+
+ This base class should be used by appenders that need to buffer a
+ number of events before logging them. For example the
+ buffers events and then submits the entire contents of the buffer to
+ the underlying database in one go.
+
+
+ Subclasses should override the
+ method to deliver the buffered events.
+
+ The BufferingAppenderSkeleton maintains a fixed size cyclic
+ buffer of events. The size of the buffer is set using
+ the property.
+
+ A is used to inspect
+ each event as it arrives in the appender. If the
+ triggers, then the current buffer is sent immediately
+ (see ). Otherwise the event
+ is stored in the buffer. For example, an evaluator can be used to
+ deliver the events immediately when an ERROR event arrives.
+
+
+ The buffering appender can be configured in a mode.
+ By default the appender is NOT lossy. When the buffer is full all
+ the buffered events are sent with .
+ If the property is set to true then the
+ buffer will not be sent when it is full, and new events arriving
+ in the appender will overwrite the oldest event in the buffer.
+ In lossy mode the buffer will only be sent when the
+ triggers. This can be useful behavior when you need to know about
+ ERROR events but not about events with a lower level, configure an
+ evaluator that will trigger when an ERROR event arrives, the whole
+ buffer will be sent which gives a history of events leading up to
+ the ERROR event.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Abstract base class implementation of .
+
+
+
+ This class provides the code for common functionality, such
+ as support for threshold filtering and support for general filters.
+
+
+ Appenders can also implement the interface. Therefore
+ they would require that the method
+ be called after the appenders properties have been configured.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Implement this interface for your own strategies for printing log statements.
+
+
+
+ Implementors should consider extending the
+ class which provides a default implementation of this interface.
+
+
+ Appenders can also implement the interface. Therefore
+ they would require that the method
+ be called after the appenders properties have been configured.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Closes the appender and releases resources.
+
+
+
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+
+
+ It is a programming error to append to a closed appender.
+
+
+
+
+
+ Log the logging event in Appender specific way.
+
+ The event to log
+
+
+ This method is called to log a message into this appender.
+
+
+
+
+
+ Gets or sets the name of this appender.
+
+ The name of the appender.
+
+ The name uniquely identifies the appender.
+
+
+
+
+ Interface for appenders that support bulk logging.
+
+
+
+ This interface extends the interface to
+ support bulk logging of objects. Appenders
+ should only implement this interface if they can bulk log efficiently.
+
+
+ Nicko Cadell
+
+
+
+ Log the array of logging events in Appender specific way.
+
+ The events to log
+
+
+ This method is called to log an array of events into this appender.
+
+
+
+
+
+ Interface used to delay activate a configured object.
+
+
+
+ This allows an object to defer activation of its options until all
+ options have been set. This is required for components which have
+ related options that remain ambiguous until all are set.
+
+
+ If a component implements this interface then the method
+ must be called by the container after its all the configured properties have been set
+ and before the component can be used.
+
+
+ Nicko Cadell
+
+
+
+ Activate the options that were previously set with calls to properties.
+
+
+
+ This allows an object to defer activation of its options until all
+ options have been set. This is required for components which have
+ related options that remain ambiguous until all are set.
+
+
+ If a component implements this interface then this method must be called
+ after its properties have been set before the component can be used.
+
+
+
+
+
+ Interface that can be implemented by Appenders that buffer logging data and expose a method.
+
+
+
+
+ Flushes any buffered log data.
+
+
+ Appenders that implement the method must do so in a thread-safe manner: it can be called concurrently with
+ the method.
+
+ Typically this is done by locking on the Appender instance, e.g.:
+
+
+
+
+
+ The parameter is only relevant for appenders that process logging events asynchronously,
+ such as .
+
+
+ The maximum time to wait for logging events to be flushed.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ Initial buffer size
+
+
+
+
+ Maximum buffer size before it is recycled
+
+
+
+
+ Default constructor
+
+
+ Empty default constructor
+
+
+
+
+ Finalizes this appender by calling the implementation's
+ method.
+
+
+
+ If this appender has not been closed then the Finalize method
+ will call .
+
+
+
+
+
+ Initialize the appender based on the options set
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Closes the appender and release resources.
+
+
+
+ Release any resources allocated within the appender such as file handles,
+ network connections, etc.
+
+
+ It is a programming error to append to a closed appender.
+
+
+ This method cannot be overridden by subclasses. This method
+ delegates the closing of the appender to the
+ method which must be overridden in the subclass.
+
+
+
+
+
+ Performs threshold checks and invokes filters before
+ delegating actual logging to the subclasses specific
+ method.
+
+ The event to log.
+
+
+ This method cannot be overridden by derived classes. A
+ derived class should override the method
+ which is called by this method.
+
+
+ The implementation of this method is as follows:
+
+
+
+
+
+ Checks that the severity of the
+ is greater than or equal to the of this
+ appender.
+
+
+
+ Checks that the chain accepts the
+ .
+
+
+
+
+ Calls and checks that
+ it returns true.
+
+
+
+
+ If all of the above steps succeed then the
+ will be passed to the abstract method.
+
+
+
+
+
+ Performs threshold checks and invokes filters before
+ delegating actual logging to the subclasses specific
+ method.
+
+ The array of events to log.
+
+
+ This method cannot be overridden by derived classes. A
+ derived class should override the method
+ which is called by this method.
+
+
+ The implementation of this method is as follows:
+
+
+
+
+
+ Checks that the severity of the
+ is greater than or equal to the of this
+ appender.
+
+
+
+ Checks that the chain accepts the
+ .
+
+
+
+
+ Calls and checks that
+ it returns true.
+
+
+
+
+ If all of the above steps succeed then the
+ will be passed to the method.
+
+
+
+
+
+ Test if the logging event should we output by this appender
+
+ the event to test
+ true if the event should be output, false if the event should be ignored
+
+
+ This method checks the logging event against the threshold level set
+ on this appender and also against the filters specified on this
+ appender.
+
+
+ The implementation of this method is as follows:
+
+
+
+
+
+ Checks that the severity of the
+ is greater than or equal to the of this
+ appender.
+
+
+
+ Checks that the chain accepts the
+ .
+
+
+
+
+
+
+
+
+ Adds a filter to the end of the filter chain.
+
+ the filter to add to this appender
+
+
+ The Filters are organized in a linked list.
+
+
+ Setting this property causes the new filter to be pushed onto the
+ back of the filter chain.
+
+
+
+
+
+ Clears the filter list for this appender.
+
+
+
+ Clears the filter list for this appender.
+
+
+
+
+
+ Checks if the message level is below this appender's threshold.
+
+ to test against.
+
+
+ If there is no threshold set, then the return value is always true.
+
+
+
+ true if the meets the
+ requirements of this appender.
+
+
+
+
+ Is called when the appender is closed. Derived classes should override
+ this method if resources need to be released.
+
+
+
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+
+
+ It is a programming error to append to a closed appender.
+
+
+
+
+
+ Subclasses of should implement this method
+ to perform actual logging.
+
+ The event to append.
+
+
+ A subclass must implement this method to perform
+ logging of the .
+
+ This method will be called by
+ if all the conditions listed for that method are met.
+
+
+ To restrict the logging of events in the appender
+ override the method.
+
+
+
+
+
+ Append a bulk array of logging events.
+
+ the array of logging events
+
+
+ This base class implementation calls the
+ method for each element in the bulk array.
+
+
+ A sub class that can better process a bulk array of events should
+ override this method in addition to .
+
+
+
+
+
+ Called before as a precondition.
+
+
+
+ This method is called by
+ before the call to the abstract method.
+
+
+ This method can be overridden in a subclass to extend the checks
+ made before the event is passed to the method.
+
+
+ A subclass should ensure that they delegate this call to
+ this base class if it is overridden.
+
+
+ true if the call to should proceed.
+
+
+
+ Renders the to a string.
+
+ The event to render.
+ The event rendered as a string.
+
+
+ Helper method to render a to
+ a string. This appender must have a
+ set to render the to
+ a string.
+
+ If there is exception data in the logging event and
+ the layout does not process the exception, this method
+ will append the exception text to the rendered string.
+
+
+ Where possible use the alternative version of this method
+ .
+ That method streams the rendering onto an existing Writer
+ which can give better performance if the caller already has
+ a open and ready for writing.
+
+
+
+
+
+ Renders the to a string.
+
+ The event to render.
+ The TextWriter to write the formatted event to
+
+
+ Helper method to render a to
+ a string. This appender must have a
+ set to render the to
+ a string.
+
+ If there is exception data in the logging event and
+ the layout does not process the exception, this method
+ will append the exception text to the rendered string.
+
+
+ Use this method in preference to
+ where possible. If, however, the caller needs to render the event
+ to a string then does
+ provide an efficient mechanism for doing so.
+
+
+
+
+
+ Flushes any buffered log data.
+
+
+ This implementation doesn't flush anything and always returns true
+
+ True if all logging events were flushed successfully, else false.
+
+
+
+ The layout of this appender.
+
+
+ See for more information.
+
+
+
+
+ The name of this appender.
+
+
+ See for more information.
+
+
+
+
+ The level threshold of this appender.
+
+
+
+ There is no level threshold filtering by default.
+
+
+ See for more information.
+
+
+
+
+
+ It is assumed and enforced that errorHandler is never null.
+
+
+
+ It is assumed and enforced that errorHandler is never null.
+
+
+ See for more information.
+
+
+
+
+
+ The first filter in the filter chain.
+
+
+
+ Set to null initially.
+
+
+ See for more information.
+
+
+
+
+
+ The last filter in the filter chain.
+
+
+ See for more information.
+
+
+
+
+ Flag indicating if this appender is closed.
+
+
+ See for more information.
+
+
+
+
+ The guard prevents an appender from repeatedly calling its own DoAppend method
+
+
+
+
+ StringWriter used to render events
+
+
+
+
+ The fully qualified type of the AppenderSkeleton class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets or sets the threshold of this appender.
+
+
+ The threshold of the appender.
+
+
+
+ All log events with lower level than the threshold level are ignored
+ by the appender.
+
+
+ In configuration files this option is specified by setting the
+ value of the option to a level
+ string, such as "DEBUG", "INFO" and so on.
+
+
+
+
+
+ Gets or sets the for this appender.
+
+ The of the appender
+
+
+ The provides a default
+ implementation for the property.
+
+
+
+
+
+ The filter chain.
+
+ The head of the filter chain filter chain.
+
+
+ Returns the head Filter. The Filters are organized in a linked list
+ and so all Filters on this Appender are available through the result.
+
+
+
+
+
+ Gets or sets the for this appender.
+
+ The layout of the appender.
+
+
+ See for more information.
+
+
+
+
+
+
+ Gets or sets the name of this appender.
+
+ The name of the appender.
+
+
+ The name uniquely identifies the appender.
+
+
+
+
+
+ Tests if this appender requires a to be set.
+
+
+
+ In the rather exceptional case, where the appender
+ implementation admits a layout but can also work without it,
+ then the appender should return true.
+
+
+ This default implementation always returns false.
+
+
+
+ true if the appender requires a layout object, otherwise false.
+
+
+
+
+ The default buffer size.
+
+
+ The default size of the cyclic buffer used to store events.
+ This is set to 512 by default.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Protected default constructor to allow subclassing.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ the events passed through this appender must be
+ fixed by the time that they arrive in the derived class' SendBuffer method.
+
+
+ Protected constructor to allow subclassing.
+
+
+ The should be set if the subclass
+ expects the events delivered to be fixed even if the
+ is set to zero, i.e. when no buffering occurs.
+
+
+
+
+
+ Flushes any buffered log data.
+
+ The maximum time to wait for logging events to be flushed.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ Flush the currently buffered events
+
+
+
+ Flushes any events that have been buffered.
+
+
+ If the appender is buffering in mode then the contents
+ of the buffer will NOT be flushed to the appender.
+
+
+
+
+
+ Flush the currently buffered events
+
+ set to true to flush the buffer of lossy events
+
+
+ Flushes events that have been buffered. If is
+ false then events will only be flushed if this buffer is non-lossy mode.
+
+
+ If the appender is buffering in mode then the contents
+ of the buffer will only be flushed if is true.
+ In this case the contents of the buffer will be tested against the
+ and if triggering will be output. All other buffered
+ events will be discarded.
+
+
+ If is true then the buffer will always
+ be emptied by calling this method.
+
+
+
+
+
+ Initialize the appender based on the options set
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Close this appender instance.
+
+
+
+ Close this appender instance. If this appender is marked
+ as not then the remaining events in
+ the buffer must be sent when the appender is closed.
+
+
+
+
+
+ This method is called by the method.
+
+ the event to log
+
+
+ Stores the in the cyclic buffer.
+
+
+ The buffer will be sent (i.e. passed to the
+ method) if one of the following conditions is met:
+
+
+
+ The cyclic buffer is full and this appender is
+ marked as not lossy (see )
+
+
+ An is set and
+ it is triggered for the
+ specified.
+
+
+
+ Before the event is stored in the buffer it is fixed
+ (see ) to ensure that
+ any data referenced by the event will be valid when the buffer
+ is processed.
+
+
+
+
+
+ Sends the contents of the buffer.
+
+ The first logging event.
+ The buffer containing the events that need to be send.
+
+
+ The subclass must override .
+
+
+
+
+
+ Sends the events.
+
+ The events that need to be send.
+
+
+ The subclass must override this method to process the buffered events.
+
+
+
+
+
+ The size of the cyclic buffer used to hold the logging events.
+
+
+ Set to by default.
+
+
+
+
+ The cyclic buffer used to store the logging events.
+
+
+
+
+ The triggering event evaluator that causes the buffer to be sent immediately.
+
+
+ The object that is used to determine if an event causes the entire
+ buffer to be sent immediately. This field can be null, which
+ indicates that event triggering is not to be done. The evaluator
+ can be set using the property. If this appender
+ has the ( property) set to
+ true then an must be set.
+
+
+
+
+ Indicates if the appender should overwrite events in the cyclic buffer
+ when it becomes full, or if the buffer should be flushed when the
+ buffer is full.
+
+
+ If this field is set to true then an must
+ be set.
+
+
+
+
+ The triggering event evaluator filters discarded events.
+
+
+ The object that is used to determine if an event that is discarded should
+ really be discarded or if it should be sent to the appenders.
+ This field can be null, which indicates that all discarded events will
+ be discarded.
+
+
+
+
+ Value indicating which fields in the event should be fixed
+
+
+ By default all fields are fixed
+
+
+
+
+ The events delivered to the subclass must be fixed.
+
+
+
+
+ Gets or sets a value that indicates whether the appender is lossy.
+
+
+ true if the appender is lossy, otherwise false. The default is false.
+
+
+
+ This appender uses a buffer to store logging events before
+ delivering them. A triggering event causes the whole buffer
+ to be send to the remote sink. If the buffer overruns before
+ a triggering event then logging events could be lost. Set
+ to false to prevent logging events
+ from being lost.
+
+ If is set to true then an
+ must be specified.
+
+
+
+
+ Gets or sets the size of the cyclic buffer used to hold the
+ logging events.
+
+
+ The size of the cyclic buffer used to hold the logging events.
+
+
+
+ The option takes a positive integer
+ representing the maximum number of logging events to collect in
+ a cyclic buffer. When the is reached,
+ oldest events are deleted as new events are added to the
+ buffer. By default the size of the cyclic buffer is 512 events.
+
+
+ If the is set to a value less than
+ or equal to 1 then no buffering will occur. The logging event
+ will be delivered synchronously (depending on the
+ and properties). Otherwise the event will
+ be buffered.
+
+
+
+
+
+ Gets or sets the that causes the
+ buffer to be sent immediately.
+
+
+ The that causes the buffer to be
+ sent immediately.
+
+
+
+ The evaluator will be called for each event that is appended to this
+ appender. If the evaluator triggers then the current buffer will
+ immediately be sent (see ).
+
+ If is set to true then an
+ must be specified.
+
+
+
+
+ Gets or sets the value of the to use.
+
+
+ The value of the to use.
+
+
+
+ The evaluator will be called for each event that is discarded from this
+ appender. If the evaluator triggers then the current buffer will immediately
+ be sent (see ).
+
+
+
+
+
+ Gets or sets a value indicating if only part of the logging event data
+ should be fixed.
+
+
+ true if the appender should only fix part of the logging event
+ data, otherwise false. The default is false.
+
+
+
+ Setting this property to true will cause only part of the
+ event data to be fixed and serialized. This will improve performance.
+
+
+ See for more information.
+
+
+
+
+
+ Gets or sets a the fields that will be fixed in the event
+
+
+ The event fields that will be fixed before the event is buffered
+
+
+
+ The logging event needs to have certain thread specific values
+ captured before it can be buffered. See
+ for details.
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Public default constructor to initialize a new instance of this class.
+
+
+
+
+ Initialize the appender based on the options set
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Override the parent method to close the database
+
+
+
+ Closes the database command and database connection.
+
+
+
+
+
+ Inserts the events into the database.
+
+ The events to insert into the database.
+
+
+ Insert all the events specified in the
+ array into the database.
+
+
+
+
+
+ Adds a parameter to the command.
+
+ The parameter to add to the command.
+
+
+ Adds a parameter to the ordered list of command parameters.
+
+
+
+
+
+ Writes the events to the database using the transaction specified.
+
+ The transaction that the events will be executed under.
+ The array of events to insert into the database.
+
+
+ The transaction argument can be null if the appender has been
+ configured not to use transactions. See
+ property for more information.
+
+
+
+
+
+ Formats the log message into database statement text.
+
+ The event being logged.
+
+ This method can be overridden by subclasses to provide
+ more control over the format of the database statement.
+
+
+ Text that can be passed to a .
+
+
+
+
+ Creates an instance used to connect to the database.
+
+
+ This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).
+
+ The of the object.
+ The connectionString output from the ResolveConnectionString method.
+ An instance with a valid connection string.
+
+
+
+ Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey
+ property.
+
+
+ ConnectiongStringName is only supported on .NET 2.0 and higher.
+
+ Additional information describing the connection string.
+ A connection string used to connect to the database.
+
+
+
+ Retrieves the class type of the ADO.NET provider.
+
+
+
+ Gets the Type of the ADO.NET provider to use to connect to the
+ database. This method resolves the type specified in the
+ property.
+
+
+ Subclasses can override this method to return a different type
+ if necessary.
+
+
+ The of the ADO.NET provider
+
+
+
+ Connects to the database.
+
+
+
+
+ Cleanup the existing connection.
+
+
+ Calls the IDbConnection's method.
+
+
+
+
+ The list of objects.
+
+
+
+ The list of objects.
+
+
+
+
+
+ The security context to use for privileged calls
+
+
+
+
+ The that will be used
+ to insert logging events into a database.
+
+
+
+
+ Database connection string.
+
+
+
+
+ The appSettings key from App.Config that contains the connection string.
+
+
+
+
+ The connectionStrings key from App.Config that contains the connection string.
+
+
+
+
+ String type name of the type name.
+
+
+
+
+ The text of the command.
+
+
+
+
+ The command type.
+
+
+
+
+ Indicates whether to use transactions when writing to the database.
+
+
+
+
+ Indicates whether to reconnect when a connection is lost.
+
+
+
+
+ The fully qualified type of the AdoNetAppender class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets or sets the database connection string that is used to connect to
+ the database.
+
+
+ The database connection string used to connect to the database.
+
+
+
+ The connections string is specific to the connection type.
+ See for more information.
+
+
+ Connection string for MS Access via ODBC:
+ "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb"
+
+ Another connection string for MS Access via ODBC:
+ "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;"
+
+ Connection string for MS Access via OLE DB:
+ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;"
+
+
+
+
+ The appSettings key from App.Config that contains the connection string.
+
+
+
+
+ The connectionStrings key from App.Config that contains the connection string.
+
+
+ This property requires at least .NET 2.0.
+
+
+
+
+ Gets or sets the type name of the connection
+ that should be created.
+
+
+ The type name of the connection.
+
+
+
+ The type name of the ADO.NET provider to use.
+
+
+ The default is to use the OLE DB provider.
+
+
+ Use the OLE DB Provider. This is the default value.
+ System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Use the MS SQL Server Provider.
+ System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Use the ODBC Provider.
+ Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral
+ This is an optional package that you can download from
+ http://msdn.microsoft.com/downloads
+ search for ODBC .NET Data Provider.
+
+ Use the Oracle Provider.
+ System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ This is an optional package that you can download from
+ http://msdn.microsoft.com/downloads
+ search for .NET Managed Provider for Oracle.
+
+
+
+
+ Gets or sets the command text that is used to insert logging events
+ into the database.
+
+
+ The command text used to insert logging events into the database.
+
+
+
+ Either the text of the prepared statement or the
+ name of the stored procedure to execute to write into
+ the database.
+
+
+ The property determines if
+ this text is a prepared statement or a stored procedure.
+
+
+ If this property is not set, the command text is retrieved by invoking
+ .
+
+
+
+
+
+ Gets or sets the command type to execute.
+
+
+ The command type to execute.
+
+
+
+ This value may be either (System.Data.CommandType.Text) to specify
+ that the is a prepared statement to execute,
+ or (System.Data.CommandType.StoredProcedure) to specify that the
+ property is the name of a stored procedure
+ to execute.
+
+
+ The default value is (System.Data.CommandType.Text).
+
+
+
+
+
+ Should transactions be used to insert logging events in the database.
+
+
+ true if transactions should be used to insert logging events in
+ the database, otherwise false. The default value is true.
+
+
+
+ Gets or sets a value that indicates whether transactions should be used
+ to insert logging events in the database.
+
+
+ When set a single transaction will be used to insert the buffered events
+ into the database. Otherwise each event will be inserted without using
+ an explicit transaction.
+
+
+
+
+
+ Gets or sets the used to call the NetSend method.
+
+
+ The used to call the NetSend method.
+
+
+
+ Unless a specified here for this appender
+ the is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+
+
+
+
+
+ Should this appender try to reconnect to the database on error.
+
+
+ true if the appender should try to reconnect to the database after an
+ error has occurred, otherwise false. The default value is false,
+ i.e. not to try to reconnect.
+
+
+
+ The default behaviour is for the appender not to try to reconnect to the
+ database if an error occurs. Subsequent logging events are discarded.
+
+
+ To force the appender to attempt to reconnect to the database set this
+ property to true.
+
+
+ When the appender attempts to connect to the database there may be a
+ delay of up to the connection timeout specified in the connection string.
+ This delay will block the calling application's thread.
+ Until the connection can be reestablished this potential delay may occur multiple times.
+
+
+
+
+
+ Gets or sets the underlying .
+
+
+ The underlying .
+
+
+ creates a to insert
+ logging events into a database. Classes deriving from
+ can use this property to get or set this . Use the
+ underlying returned from if
+ you require access beyond that which provides.
+
+
+
+
+ Parameter type used by the .
+
+
+
+ This class provides the basic database parameter properties
+ as defined by the interface.
+
+ This type can be subclassed to provide database specific
+ functionality. The two methods that are called externally are
+ and .
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Default constructor for the AdoNetAppenderParameter class.
+
+
+
+
+ Prepare the specified database command object.
+
+ The command to prepare.
+
+
+ Prepares the database command object by adding
+ this parameter to its collection of parameters.
+
+
+
+
+
+ Renders the logging event and set the parameter value in the command.
+
+ The command containing the parameter.
+ The event to be rendered.
+
+
+ Renders the logging event using this parameters layout
+ object. Sets the value of the parameter on the command object.
+
+
+
+
+
+ The name of this parameter.
+
+
+
+
+ The database type for this parameter.
+
+
+
+
+ Flag to infer type rather than use the DbType
+
+
+
+
+ The precision for this parameter.
+
+
+
+
+ The scale for this parameter.
+
+
+
+
+ The size for this parameter.
+
+
+
+
+ The to use to render the
+ logging event into an object for this parameter.
+
+
+
+
+ Gets or sets the name of this parameter.
+
+
+ The name of this parameter.
+
+
+
+ The name of this parameter. The parameter name
+ must match up to a named parameter to the SQL stored procedure
+ or prepared statement.
+
+
+
+
+
+ Gets or sets the database type for this parameter.
+
+
+ The database type for this parameter.
+
+
+
+ The database type for this parameter. This property should
+ be set to the database type from the
+ enumeration. See .
+
+
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the type from the value.
+
+
+
+
+
+
+ Gets or sets the precision for this parameter.
+
+
+ The precision for this parameter.
+
+
+
+ The maximum number of digits used to represent the Value.
+
+
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the precision from the value.
+
+
+
+
+
+
+ Gets or sets the scale for this parameter.
+
+
+ The scale for this parameter.
+
+
+
+ The number of decimal places to which Value is resolved.
+
+
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the scale from the value.
+
+
+
+
+
+
+ Gets or sets the size for this parameter.
+
+
+ The size for this parameter.
+
+
+
+ The maximum size, in bytes, of the data within the column.
+
+
+ This property is optional. If not specified the ADO.NET provider
+ will attempt to infer the size from the value.
+
+
+ For BLOB data types like VARCHAR(max) it may be impossible to infer the value automatically, use -1 as the size in this case.
+
+
+
+
+
+
+ Gets or sets the to use to
+ render the logging event into an object for this
+ parameter.
+
+
+ The used to render the
+ logging event into an object for this parameter.
+
+
+
+ The that renders the value for this
+ parameter.
+
+
+ The can be used to adapt
+ any into a
+ for use in the property.
+
+
+
+
+
+ Appends logging events to the terminal using ANSI color escape sequences.
+
+
+
+ AnsiColorTerminalAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific level of message to be set.
+
+
+ This appender expects the terminal to understand the VT100 control set
+ in order to interpret the color codes. If the terminal or console does not
+ understand the control codes the behavior is not defined.
+
+
+ By default, all output is written to the console's standard output stream.
+ The property can be set to direct the output to the
+ error stream.
+
+
+ NOTE: This appender writes each message to the System.Console.Out or
+ System.Console.Error that is set at the time the event is appended.
+ Therefore it is possible to programmatically redirect the output of this appender
+ (for example NUnit does this to capture program output). While this is the desired
+ behavior of this appender it may have security implications in your application.
+
+
+ When configuring the ANSI colored terminal appender, a mapping should be
+ specified to map a logging level to a color. For example:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Level is the standard log4net logging level and ForeColor and BackColor can be any
+ of the following values:
+
+ Blue
+ Green
+ Red
+ White
+ Yellow
+ Purple
+ Cyan
+
+ These color values cannot be combined together to make new colors.
+
+
+ The attributes can be any combination of the following:
+
+ Brightforeground is brighter
+ Dimforeground is dimmer
+ Underscoremessage is underlined
+ Blinkforeground is blinking (does not work on all terminals)
+ Reverseforeground and background are reversed
+ Hiddenoutput is hidden
+ Strikethroughmessage has a line through it
+
+ While any of these attributes may be combined together not all combinations
+ work well together, for example setting both Bright and Dim attributes makes
+ no sense.
+
+
+ Patrick Wagstrom
+ Nicko Cadell
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+
+
+ Ansi code to reset terminal
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The instance of the class is set up to write
+ to the standard output stream.
+
+
+
+
+ Add a mapping of level to color
+
+ The mapping to add
+
+
+ Add a mapping to this appender.
+ Each mapping defines the foreground and background colours
+ for a level.
+
+
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Writes the event to the console.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ Initialize the options for this appender
+
+
+
+ Initialize the level to color mappings set on this appender.
+
+
+
+
+
+ Flag to write output to the error stream rather than the standard output stream
+
+
+
+
+ Mapping from level object to color value
+
+
+
+
+ Target is the value of the console output stream.
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ The enum of possible display attributes
+
+
+
+ The following flags can be combined together to
+ form the ANSI color attributes.
+
+
+
+
+
+
+ text is bright
+
+
+
+
+ text is dim
+
+
+
+
+ text is underlined
+
+
+
+
+ text is blinking
+
+
+ Not all terminals support this attribute
+
+
+
+
+ text and background colors are reversed
+
+
+
+
+ text is hidden
+
+
+
+
+ text is displayed with a strikethrough
+
+
+
+
+ text color is light
+
+
+
+
+ The enum of possible foreground or background color values for
+ use with the color mapping method
+
+
+
+ The output can be in one for the following ANSI colors.
+
+
+
+
+
+
+ color is black
+
+
+
+
+ color is red
+
+
+
+
+ color is green
+
+
+
+
+ color is yellow
+
+
+
+
+ color is blue
+
+
+
+
+ color is magenta
+
+
+
+
+ color is cyan
+
+
+
+
+ color is white
+
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+
+
+
+ Defines the mapping between a level and the color it should be displayed in.
+
+
+
+
+
+ An entry in the
+
+
+
+ This is an abstract base class for types that are stored in the
+ object.
+
+
+ Nicko Cadell
+
+
+
+ Default protected constructor
+
+
+
+ Default protected constructor
+
+
+
+
+
+ Initialize any options defined on this entry
+
+
+
+ Should be overridden by any classes that need to initialise based on their options
+
+
+
+
+
+ The level that is the key for this mapping
+
+
+ The that is the key for this mapping
+
+
+
+ Get or set the that is the key for this
+ mapping subclass.
+
+
+
+
+
+ Initialize the options for the object
+
+
+
+ Combine the and together
+ and append the attributes.
+
+
+
+
+
+ The mapped foreground color for the specified level
+
+
+
+ Required property.
+ The mapped foreground color for the specified level
+
+
+
+
+
+ The mapped background color for the specified level
+
+
+
+ Required property.
+ The mapped background color for the specified level
+
+
+
+
+
+ The color attributes for the specified level
+
+
+
+ Required property.
+ The color attributes for the specified level
+
+
+
+
+
+ The combined , and
+ suitable for setting the ansi terminal color.
+
+
+
+
+ A strongly-typed collection of objects.
+
+ Nicko Cadell
+
+
+
+ Creates a read-only wrapper for a AppenderCollection instance.
+
+ list to create a readonly wrapper arround
+
+ An AppenderCollection wrapper that is read-only.
+
+
+
+
+ An empty readonly static AppenderCollection
+
+
+
+
+ Initializes a new instance of the AppenderCollection class
+ that is empty and has the default initial capacity.
+
+
+
+
+ Initializes a new instance of the AppenderCollection class
+ that has the specified initial capacity.
+
+
+ The number of elements that the new AppenderCollection is initially capable of storing.
+
+
+
+
+ Initializes a new instance of the AppenderCollection class
+ that contains elements copied from the specified AppenderCollection.
+
+ The AppenderCollection whose elements are copied to the new collection.
+
+
+
+ Initializes a new instance of the AppenderCollection class
+ that contains elements copied from the specified array.
+
+ The array whose elements are copied to the new list.
+
+
+
+ Initializes a new instance of the AppenderCollection class
+ that contains elements copied from the specified collection.
+
+ The collection whose elements are copied to the new list.
+
+
+
+ Allow subclasses to avoid our default constructors
+
+
+
+
+
+
+ Copies the entire AppenderCollection to a one-dimensional
+ array.
+
+ The one-dimensional array to copy to.
+
+
+
+ Copies the entire AppenderCollection to a one-dimensional
+ array, starting at the specified index of the target array.
+
+ The one-dimensional array to copy to.
+ The zero-based index in at which copying begins.
+
+
+
+ Adds a to the end of the AppenderCollection.
+
+ The to be added to the end of the AppenderCollection.
+ The index at which the value has been added.
+
+
+
+ Removes all elements from the AppenderCollection.
+
+
+
+
+ Creates a shallow copy of the .
+
+ A new with a shallow copy of the collection data.
+
+
+
+ Determines whether a given is in the AppenderCollection.
+
+ The to check for.
+ true if is found in the AppenderCollection; otherwise, false.
+
+
+
+ Returns the zero-based index of the first occurrence of a
+ in the AppenderCollection.
+
+ The to locate in the AppenderCollection.
+
+ The zero-based index of the first occurrence of
+ in the entire AppenderCollection, if found; otherwise, -1.
+
+
+
+
+ Inserts an element into the AppenderCollection at the specified index.
+
+ The zero-based index at which should be inserted.
+ The to insert.
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Removes the first occurrence of a specific from the AppenderCollection.
+
+ The to remove from the AppenderCollection.
+
+ The specified was not found in the AppenderCollection.
+
+
+
+
+ Removes the element at the specified index of the AppenderCollection.
+
+ The zero-based index of the element to remove.
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Returns an enumerator that can iterate through the AppenderCollection.
+
+ An for the entire AppenderCollection.
+
+
+
+ Adds the elements of another AppenderCollection to the current AppenderCollection.
+
+ The AppenderCollection whose elements should be added to the end of the current AppenderCollection.
+ The new of the AppenderCollection.
+
+
+
+ Adds the elements of a array to the current AppenderCollection.
+
+ The array whose elements should be added to the end of the AppenderCollection.
+ The new of the AppenderCollection.
+
+
+
+ Adds the elements of a collection to the current AppenderCollection.
+
+ The collection whose elements should be added to the end of the AppenderCollection.
+ The new of the AppenderCollection.
+
+
+
+ Sets the capacity to the actual number of elements.
+
+
+
+
+ Return the collection elements as an array
+
+ the array
+
+
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Gets the number of elements actually contained in the AppenderCollection.
+
+
+
+
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+
+ false, because the backing type is an array, which is never thread-safe.
+
+
+
+ Gets an object that can be used to synchronize access to the collection.
+
+
+
+
+ Gets or sets the at the specified index.
+
+ The zero-based index of the element to get or set.
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Gets a value indicating whether the collection has a fixed size.
+
+ true if the collection has a fixed size; otherwise, false. The default is false
+
+
+
+ Gets a value indicating whether the IList is read-only.
+
+ true if the collection is read-only; otherwise, false. The default is false
+
+
+
+ Gets or sets the number of elements the AppenderCollection can contain.
+
+
+
+
+ Supports type-safe iteration over a .
+
+
+
+
+
+ Advances the enumerator to the next element in the collection.
+
+
+ true if the enumerator was successfully advanced to the next element;
+ false if the enumerator has passed the end of the collection.
+
+
+ The collection was modified after the enumerator was created.
+
+
+
+
+ Sets the enumerator to its initial position, before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Type visible only to our subclasses
+ Used to access protected constructor
+
+
+
+
+
+ A value
+
+
+
+
+ Supports simple iteration over a .
+
+
+
+
+
+ Initializes a new instance of the Enumerator class.
+
+
+
+
+
+ Advances the enumerator to the next element in the collection.
+
+
+ true if the enumerator was successfully advanced to the next element;
+ false if the enumerator has passed the end of the collection.
+
+
+ The collection was modified after the enumerator was created.
+
+
+
+
+ Sets the enumerator to its initial position, before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+
+
+
+
+ Appends log events to the ASP.NET system.
+
+
+
+
+ Diagnostic information and tracing messages that you specify are appended to the output
+ of the page that is sent to the requesting browser. Optionally, you can view this information
+ from a separate trace viewer (Trace.axd) that displays trace information for every page in a
+ given application.
+
+
+ Trace statements are processed and displayed only when tracing is enabled. You can control
+ whether tracing is displayed to a page, to the trace viewer, or both.
+
+
+ The logging event is passed to the or
+ method depending on the level of the logging event.
+ The event's logger name is the default value for the category parameter of the Write/Warn method.
+
+
+ Nicko Cadell
+ Gert Driesen
+ Ron Grabowski
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Write the logging event to the ASP.NET trace
+
+ the event to log
+
+
+ Write the logging event to the ASP.NET trace
+ HttpContext.Current.Trace
+ ().
+
+
+
+
+
+ Defaults to %logger
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ The category parameter sent to the Trace method.
+
+
+
+ Defaults to %logger which will use the logger name of the current
+ as the category parameter.
+
+
+
+
+
+
+
+ Buffers events and then forwards them to attached appenders.
+
+
+
+ The events are buffered in this appender until conditions are
+ met to allow the appender to deliver the events to the attached
+ appenders. See for the
+ conditions that cause the buffer to be sent.
+
+ The forwarding appender can be used to specify different
+ thresholds and filters for the same appender at different locations
+ within the hierarchy.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Interface for attaching appenders to objects.
+
+
+
+ Interface for attaching, removing and retrieving appenders.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Attaches an appender.
+
+ The appender to add.
+
+
+ Add the specified appender. The implementation may
+ choose to allow or deny duplicate appenders.
+
+
+
+
+
+ Gets an attached appender with the specified name.
+
+ The name of the appender to get.
+
+ The appender with the name specified, or null if no appender with the
+ specified name is found.
+
+
+
+ Returns an attached appender with the specified.
+ If no appender with the specified name is found null will be
+ returned.
+
+
+
+
+
+ Removes all attached appenders.
+
+
+
+ Removes and closes all attached appenders
+
+
+
+
+
+ Removes the specified appender from the list of attached appenders.
+
+ The appender to remove.
+ The appender removed from the list
+
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+
+ Removes the appender with the specified name from the list of appenders.
+
+ The name of the appender to remove.
+ The appender removed from the list
+
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+
+ Gets all attached appenders.
+
+
+ A collection of attached appenders.
+
+
+
+ Gets a collection of attached appenders.
+ If there are no attached appenders the
+ implementation should return an empty
+ collection rather than null.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Closes the appender and releases resources.
+
+
+
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+
+
+ It is a programming error to append to a closed appender.
+
+
+
+
+
+ Send the events.
+
+ The events that need to be send.
+
+
+ Forwards the events to the attached appenders.
+
+
+
+
+
+ Adds an to the list of appenders of this
+ instance.
+
+ The to add to this appender.
+
+
+ If the specified is already in the list of
+ appenders, then it won't be added again.
+
+
+
+
+
+ Looks for the appender with the specified name.
+
+ The name of the appender to lookup.
+
+ The appender with the specified name, or null.
+
+
+
+ Get the named appender attached to this buffering appender.
+
+
+
+
+
+ Removes all previously added appenders from this appender.
+
+
+
+ This is useful when re-reading configuration information.
+
+
+
+
+
+ Removes the specified appender from the list of appenders.
+
+ The appender to remove.
+ The appender removed from the list
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+ Removes the appender with the specified name from the list of appenders.
+
+ The name of the appender to remove.
+ The appender removed from the list
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+ Implementation of the interface
+
+
+
+
+ Gets the appenders contained in this appender as an
+ .
+
+
+ If no appenders can be found, then an
+ is returned.
+
+
+ A collection of the appenders in this appender.
+
+
+
+
+ Appends logging events to the console.
+
+
+
+ ColoredConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific type of message to be set.
+
+
+ By default, all output is written to the console's standard output stream.
+ The property can be set to direct the output to the
+ error stream.
+
+
+ NOTE: This appender writes directly to the application's attached console
+ not to the System.Console.Out or System.Console.ErrorTextWriter.
+ The System.Console.Out and System.Console.Error streams can be
+ programmatically redirected (for example NUnit does this to capture program output).
+ This appender will ignore these redirections because it needs to use Win32
+ API calls to colorize the output. To respect these redirections the
+ must be used.
+
+
+ When configuring the colored console appender, mapping should be
+ specified to map a logging level to a color. For example:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Level is the standard log4net logging level and ForeColor and BackColor can be any
+ combination of the following values:
+
+ Blue
+ Green
+ Red
+ White
+ Yellow
+ Purple
+ Cyan
+ HighIntensity
+
+
+
+ Rick Hobbs
+ Nicko Cadell
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The instance of the class is set up to write
+ to the standard output stream.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified layout.
+
+ the layout to use for this appender
+
+ The instance of the class is set up to write
+ to the standard output stream.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified layout.
+
+ the layout to use for this appender
+ flag set to true to write to the console error stream
+
+ When is set to true, output is written to
+ the standard error output stream. Otherwise, output is written to the standard
+ output stream.
+
+
+
+
+ Add a mapping of level to color - done by the config file
+
+ The mapping to add
+
+
+ Add a mapping to this appender.
+ Each mapping defines the foreground and background colors
+ for a level.
+
+
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Writes the event to the console.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ Initialize the options for this appender
+
+
+
+ Initialize the level to color mappings set on this appender.
+
+
+
+
+
+ Flag to write output to the error stream rather than the standard output stream
+
+
+
+
+ Mapping from level object to color value
+
+
+
+
+ The console output stream writer to write to
+
+
+
+ This writer is not thread safe.
+
+
+
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ The enum of possible color values for use with the color mapping method
+
+
+
+ The following flags can be combined together to
+ form the colors.
+
+
+
+
+
+
+ color is blue
+
+
+
+
+ color is green
+
+
+
+
+ color is red
+
+
+
+
+ color is white
+
+
+
+
+ color is yellow
+
+
+
+
+ color is purple
+
+
+
+
+ color is cyan
+
+
+
+
+ color is intensified
+
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+
+
+
+ Defines the mapping between a level and the color it should be displayed in.
+
+
+
+
+
+ Initialize the options for the object
+
+
+
+ Combine the and together.
+
+
+
+
+
+ The mapped foreground color for the specified level
+
+
+
+ Required property.
+ The mapped foreground color for the specified level.
+
+
+
+
+
+ The mapped background color for the specified level
+
+
+
+ Required property.
+ The mapped background color for the specified level.
+
+
+
+
+
+ The combined and suitable for
+ setting the console color.
+
+
+
+
+ Appends logging events to the console.
+
+
+
+ ConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user.
+
+
+ By default, all output is written to the console's standard output stream.
+ The property can be set to direct the output to the
+ error stream.
+
+
+ NOTE: This appender writes each message to the System.Console.Out or
+ System.Console.Error that is set at the time the event is appended.
+ Therefore it is possible to programmatically redirect the output of this appender
+ (for example NUnit does this to capture program output). While this is the desired
+ behavior of this appender it may have security implications in your application.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The instance of the class is set up to write
+ to the standard output stream.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified layout.
+
+ the layout to use for this appender
+
+ The instance of the class is set up to write
+ to the standard output stream.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified layout.
+
+ the layout to use for this appender
+ flag set to true to write to the console error stream
+
+ When is set to true, output is written to
+ the standard error output stream. Otherwise, output is written to the standard
+ output stream.
+
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Writes the event to the console.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Appends log events to the system.
+
+
+
+ The application configuration file can be used to control what listeners
+ are actually used. See the MSDN documentation for the
+ class for details on configuring the
+ debug system.
+
+
+ Events are written using the
+ method. The event's logger name is passed as the value for the category name to the Write method.
+
+
+ Nicko Cadell
+
+
+
+ Initializes a new instance of the .
+
+
+
+ Default constructor.
+
+
+
+
+
+ Initializes a new instance of the
+ with a specified layout.
+
+ The layout to use with this appender.
+
+
+ Obsolete constructor.
+
+
+
+
+
+ Flushes any buffered log data.
+
+ The maximum time to wait for logging events to be flushed.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ Writes the logging event to the system.
+
+ The event to log.
+
+
+ Writes the logging event to the system.
+ If is true then the
+ is called.
+
+
+
+
+
+ Immediate flush means that the underlying writer or output stream
+ will be flushed at the end of each append operation.
+
+
+
+ Immediate flush is slower but ensures that each append request is
+ actually written. If is set to
+ false, then there is a good chance that the last few
+ logs events are not actually written to persistent media if and
+ when the application crashes.
+
+
+ The default value is true.
+
+
+
+
+ Defaults to a with %logger as the pattern.
+
+
+
+
+ Gets or sets a value that indicates whether the appender will
+ flush at the end of each write.
+
+
+ The default behavior is to flush at the end of each
+ write. If the option is set tofalse, then the underlying
+ stream can defer writing to physical medium to a later time.
+
+
+ Avoiding the flush operation at the end of each append results
+ in a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+
+
+
+
+
+ Formats the category parameter sent to the Debug method.
+
+
+
+ Defaults to a with %logger as the pattern which will use the logger name of the current
+ as the category parameter.
+
+
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Writes events to the system event log.
+
+
+
+ The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.
+ See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog
+
+
+ The EventID of the event log entry can be
+ set using the EventID property ()
+ on the .
+
+
+ The Category of the event log entry can be
+ set using the Category property ()
+ on the .
+
+
+ There is a limit of 32K characters for an event log message
+
+
+ When configuring the EventLogAppender a mapping can be
+ specified to map a logging level to an event log entry type. For example:
+
+
+ <mapping>
+ <level value="ERROR" />
+ <eventLogEntryType value="Error" />
+ </mapping>
+ <mapping>
+ <level value="DEBUG" />
+ <eventLogEntryType value="Information" />
+ </mapping>
+
+
+ The Level is the standard log4net logging level and eventLogEntryType can be any value
+ from the enum, i.e.:
+
+ Erroran error event
+ Warninga warning event
+ Informationan informational event
+
+
+
+ Aspi Havewala
+ Douglas de la Torre
+ Nicko Cadell
+ Gert Driesen
+ Thomas Voss
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Initializes a new instance of the class
+ with the specified .
+
+ The to use with this appender.
+
+
+ Obsolete constructor.
+
+
+
+
+
+ Add a mapping of level to - done by the config file
+
+ The mapping to add
+
+
+ Add a mapping to this appender.
+ Each mapping defines the event log entry type for a level.
+
+
+
+
+
+ Initialize the appender based on the options set
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Create an event log source
+
+
+ Uses different API calls under NET_2_0
+
+
+
+
+ This method is called by the
+ method.
+
+ the event to log
+
+ Writes the event to the system event log using the
+ .
+
+ If the event has an EventID property (see )
+ set then this integer will be used as the event log event id.
+
+
+ There is a limit of 32K characters for an event log message
+
+
+
+
+
+ Get the equivalent for a
+
+ the Level to convert to an EventLogEntryType
+ The equivalent for a
+
+ Because there are fewer applicable
+ values to use in logging levels than there are in the
+ this is a one way mapping. There is
+ a loss of information during the conversion.
+
+
+
+
+ The log name is the section in the event logs where the messages
+ are stored.
+
+
+
+
+ Name of the application to use when logging. This appears in the
+ application column of the event log named by .
+
+
+
+
+ The name of the machine which holds the event log. This is
+ currently only allowed to be '.' i.e. the current machine.
+
+
+
+
+ Mapping from level object to EventLogEntryType
+
+
+
+
+ The security context to use for privileged calls
+
+
+
+
+ The event ID to use unless one is explicitly specified via the LoggingEvent's properties.
+
+
+
+
+ The event category to use unless one is explicitly specified via the LoggingEvent's properties.
+
+
+
+
+ The fully qualified type of the EventLogAppender class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ The maximum size supported by default.
+
+
+ http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx
+ The 32766 documented max size is two bytes shy of 32K (I'm assuming 32766
+ may leave space for a two byte null terminator of #0#0). The 32766 max
+ length is what the .NET 4.0 source code checks for, but this is WRONG!
+ Strings with a length > 31839 on Windows Vista or higher can CORRUPT
+ the event log! See: System.Diagnostics.EventLogInternal.InternalWriteEvent()
+ for the use of the 32766 max size.
+
+
+
+
+ The maximum size supported by a windows operating system that is vista
+ or newer.
+
+
+ See ReportEvent API:
+ http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx
+ ReportEvent's lpStrings parameter:
+ "A pointer to a buffer containing an array of
+ null-terminated strings that are merged into the message before Event Viewer
+ displays the string to the user. This parameter must be a valid pointer
+ (or NULL), even if wNumStrings is zero. Each string is limited to 31,839 characters."
+
+ Going beyond the size of 31839 will (at some point) corrupt the event log on Windows
+ Vista or higher! It may succeed for a while...but you will eventually run into the
+ error: "System.ComponentModel.Win32Exception : A device attached to the system is
+ not functioning", and the event log will then be corrupt (I was able to corrupt
+ an event log using a length of 31877 on Windows 7).
+
+ The max size for Windows Vista or higher is documented here:
+ http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx.
+ Going over this size may succeed a few times but the buffer will overrun and
+ eventually corrupt the log (based on testing).
+
+ The maxEventMsgSize size is based on the max buffer size of the lpStrings parameter of the ReportEvent API.
+ The documented max size for EventLog.WriteEntry for Windows Vista and higher is 31839, but I'm leaving room for a
+ terminator of #0#0, as we cannot see the source of ReportEvent (though we could use an API monitor to examine the
+ buffer, given enough time).
+
+
+
+
+ The maximum size that the operating system supports for
+ a event log message.
+
+
+ Used to determine the maximum string length that can be written
+ to the operating system event log and eventually truncate a string
+ that exceeds the limits.
+
+
+
+
+ This method determines the maximum event log message size allowed for
+ the current environment.
+
+
+
+
+
+ The name of the log where messages will be stored.
+
+
+ The string name of the log where messages will be stored.
+
+
+ This is the name of the log as it appears in the Event Viewer
+ tree. The default value is to log into the Application
+ log, this is where most applications write their events. However
+ if you need a separate log for your application (or applications)
+ then you should set the appropriately.
+ This should not be used to distinguish your event log messages
+ from those of other applications, the
+ property should be used to distinguish events. This property should be
+ used to group together events into a single log.
+
+
+
+
+
+ Property used to set the Application name. This appears in the
+ event logs when logging.
+
+
+ The string used to distinguish events from different sources.
+
+
+ Sets the event log source property.
+
+
+
+
+ This property is used to return the name of the computer to use
+ when accessing the event logs. Currently, this is the current
+ computer, denoted by a dot "."
+
+
+ The string name of the machine holding the event log that
+ will be logged into.
+
+
+ This property cannot be changed. It is currently set to '.'
+ i.e. the local machine. This may be changed in future.
+
+
+
+
+ Gets or sets the used to write to the EventLog.
+
+
+ The used to write to the EventLog.
+
+
+
+ The system security context used to write to the EventLog.
+
+
+ Unless a specified here for this appender
+ the is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+
+
+
+
+
+ Gets or sets the EventId to use unless one is explicitly specified via the LoggingEvent's properties.
+
+
+
+ The EventID of the event log entry will normally be
+ set using the EventID property ()
+ on the .
+ This property provides the fallback value which defaults to 0.
+
+
+
+
+
+ Gets or sets the Category to use unless one is explicitly specified via the LoggingEvent's properties.
+
+
+
+ The Category of the event log entry will normally be
+ set using the Category property ()
+ on the .
+ This property provides the fallback value which defaults to 0.
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+
+
+
+ Defines the mapping between a level and its event log entry type.
+
+
+
+
+
+ The for this entry
+
+
+
+ Required property.
+ The for this entry
+
+
+
+
+
+ Appends logging events to a file.
+
+
+
+ Logging events are sent to the file specified by
+ the property.
+
+
+ The file can be opened in either append or overwrite mode
+ by specifying the property.
+ If the file path is relative it is taken as relative from
+ the application base directory. The file encoding can be
+ specified by setting the property.
+
+
+ The layout's and
+ values will be written each time the file is opened and closed
+ respectively. If the property is
+ then the file may contain multiple copies of the header and footer.
+
+
+ This appender will first try to open the file for writing when
+ is called. This will typically be during configuration.
+ If the file cannot be opened for writing the appender will attempt
+ to open the file again each time a message is logged to the appender.
+ If the file cannot be opened for writing when a message is logged then
+ the message will be discarded by this appender.
+
+
+ The supports pluggable file locking models via
+ the property.
+ The default behavior, implemented by
+ is to obtain an exclusive write lock on the file until this appender is closed.
+ The alternative models only hold a
+ write lock while the appender is writing a logging event ()
+ or synchronize by using a named system wide Mutex ().
+
+
+ All locking strategies have issues and you should seriously consider using a different strategy that
+ avoids having multiple processes logging to the same file.
+
+
+ Nicko Cadell
+ Gert Driesen
+ Rodrigo B. de Oliveira
+ Douglas de la Torre
+ Niall Daley
+
+
+
+ Sends logging events to a .
+
+
+
+ An Appender that writes to a .
+
+
+ This appender may be used stand alone if initialized with an appropriate
+ writer, however it is typically used as a base class for an appender that
+ can open a to write to.
+
+
+ Nicko Cadell
+ Gert Driesen
+ Douglas de la Torre
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Initializes a new instance of the class and
+ sets the output destination to a new initialized
+ with the specified .
+
+ The layout to use with this appender.
+ The to output to.
+
+
+ Obsolete constructor.
+
+
+
+
+
+ Initializes a new instance of the class and sets
+ the output destination to the specified .
+
+ The layout to use with this appender
+ The to output to
+
+ The must have been previously opened.
+
+
+
+ Obsolete constructor.
+
+
+
+
+
+ This method determines if there is a sense in attempting to append.
+
+
+
+ This method checks if an output target has been set and if a
+ layout has been set.
+
+
+ false if any of the preconditions fail.
+
+
+
+ This method is called by the
+ method.
+
+ The event to log.
+
+
+ Writes a log statement to the output stream if the output stream exists
+ and is writable.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ This method is called by the
+ method.
+
+ The array of events to log.
+
+
+ This method writes all the bulk logged events to the output writer
+ before flushing the stream.
+
+
+
+
+
+ Close this appender instance. The underlying stream or writer is also closed.
+
+
+ Closed appenders cannot be reused.
+
+
+
+
+ Writes the footer and closes the underlying .
+
+
+
+ Writes the footer and closes the underlying .
+
+
+
+
+
+ Closes the underlying .
+
+
+
+ Closes the underlying .
+
+
+
+
+
+ Clears internal references to the underlying
+ and other variables.
+
+
+
+ Subclasses can override this method for an alternate closing behavior.
+
+
+
+
+
+ Writes a footer as produced by the embedded layout's property.
+
+
+
+ Writes a footer as produced by the embedded layout's property.
+
+
+
+
+
+ Writes a header produced by the embedded layout's property.
+
+
+
+ Writes a header produced by the embedded layout's property.
+
+
+
+
+
+ Called to allow a subclass to lazily initialize the writer
+
+
+
+ This method is called when an event is logged and the or
+ have not been set. This allows a subclass to
+ attempt to initialize the writer multiple times.
+
+
+
+
+
+ This is the where logging events
+ will be written to.
+
+
+
+
+ Immediate flush means that the underlying
+ or output stream will be flushed at the end of each append operation.
+
+
+
+ Immediate flush is slower but ensures that each append request is
+ actually written. If is set to
+ false, then there is a good chance that the last few
+ logging events are not actually persisted if and when the application
+ crashes.
+
+
+ The default value is true.
+
+
+
+
+
+ The fully qualified type of the TextWriterAppender class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Flushes any buffered log data.
+
+ The maximum time to wait for logging events to be flushed.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ Gets or set whether the appender will flush at the end
+ of each append operation.
+
+
+
+ The default behavior is to flush at the end of each
+ append operation.
+
+
+ If this option is set to false, then the underlying
+ stream can defer persisting the logging event to a later
+ time.
+
+
+
+ Avoiding the flush operation at the end of each append results in
+ a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+
+
+
+
+ Sets the where the log output will go.
+
+
+
+ The specified must be open and writable.
+
+
+ The will be closed when the appender
+ instance is closed.
+
+
+ Note: Logging to an unopened will fail.
+
+
+
+
+
+ Gets or set the and the underlying
+ , if any, for this appender.
+
+
+ The for this appender.
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Gets or sets the where logging events
+ will be written to.
+
+
+ The where logging events are written.
+
+
+
+ This is the where logging events
+ will be written to.
+
+
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ Construct a new appender using the layout, file and append mode.
+
+ the layout to use with this appender
+ the full path to the file to write to
+ flag to indicate if the file should be appended to
+
+
+ Obsolete constructor.
+
+
+
+
+
+ Construct a new appender using the layout and file specified.
+ The file will be appended to.
+
+ the layout to use with this appender
+ the full path to the file to write to
+
+
+ Obsolete constructor.
+
+
+
+
+
+ Activate the options on the file appender.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ This will cause the file to be opened.
+
+
+
+
+
+ Closes any previously opened file and calls the parent's .
+
+
+
+ Resets the filename and the file stream.
+
+
+
+
+
+ Close this appender instance. The underlying stream or writer is also closed.
+
+
+
+
+ Called to initialize the file writer
+
+
+
+ Will be called for each logged message until the file is
+ successfully opened.
+
+
+
+
+
+ This method is called by the
+ method.
+
+ The event to log.
+
+
+ Writes a log statement to the output stream if the output stream exists
+ and is writable.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ This method is called by the
+ method.
+
+ The array of events to log.
+
+
+ Acquires the output file locks once before writing all the events to
+ the stream.
+
+
+
+
+
+ Writes a footer as produced by the embedded layout's property.
+
+
+
+ Writes a footer as produced by the embedded layout's property.
+
+
+
+
+
+ Writes a header produced by the embedded layout's property.
+
+
+
+ Writes a header produced by the embedded layout's property.
+
+
+
+
+
+ Closes the underlying .
+
+
+
+ Closes the underlying .
+
+
+
+
+
+ Closes the previously opened file.
+
+
+
+ Writes the to the file and then
+ closes the file.
+
+
+
+
+
+ Sets and opens the file where the log output will go. The specified file must be writable.
+
+ The path to the log file. Must be a fully qualified path.
+ If true will append to fileName. Otherwise will truncate fileName
+
+
+ Calls but guarantees not to throw an exception.
+ Errors are passed to the .
+
+
+
+
+
+ Sets and opens the file where the log output will go. The specified file must be writable.
+
+ The path to the log file. Must be a fully qualified path.
+ If true will append to fileName. Otherwise will truncate fileName
+
+
+ If there was already an opened file, then the previous file
+ is closed first.
+
+
+ This method will ensure that the directory structure
+ for the specified exists.
+
+
+
+
+
+ Sets the quiet writer used for file output
+
+ the file stream that has been opened for writing
+
+
+ This implementation of creates a
+ over the and passes it to the
+ method.
+
+
+ This method can be overridden by sub classes that want to wrap the
+ in some way, for example to encrypt the output
+ data using a System.Security.Cryptography.CryptoStream.
+
+
+
+
+
+ Sets the quiet writer being used.
+
+ the writer over the file stream that has been opened for writing
+
+
+ This method can be overridden by sub classes that want to
+ wrap the in some way.
+
+
+
+
+
+ Convert a path into a fully qualified path.
+
+ The path to convert.
+ The fully qualified path.
+
+
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+
+
+
+
+
+ Flag to indicate if we should append to the file
+ or overwrite the file. The default is to append.
+
+
+
+
+ The name of the log file.
+
+
+
+
+ The encoding to use for the file stream.
+
+
+
+
+ The security context to use for privileged calls
+
+
+
+
+ The stream to log to. Has added locking semantics
+
+
+
+
+ The locking model to use
+
+
+
+
+ The fully qualified type of the FileAppender class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets or sets the path to the file that logging will be written to.
+
+
+ The path to the file that logging will be written to.
+
+
+
+ If the path is relative it is taken as relative from
+ the application base directory.
+
+
+
+
+
+ Gets or sets a flag that indicates whether the file should be
+ appended to or overwritten.
+
+
+ Indicates whether the file should be appended to or overwritten.
+
+
+
+ If the value is set to false then the file will be overwritten, if
+ it is set to true then the file will be appended to.
+
+ The default value is true.
+
+
+
+
+ Gets or sets used to write to the file.
+
+
+ The used to write to the file.
+
+
+
+ The default encoding set is
+ which is the encoding for the system's current ANSI code page.
+
+
+
+
+
+ Gets or sets the used to write to the file.
+
+
+ The used to write to the file.
+
+
+
+ Unless a specified here for this appender
+ the is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+
+
+
+
+
+ Gets or sets the used to handle locking of the file.
+
+
+ The used to lock the file.
+
+
+
+ Gets or sets the used to handle locking of the file.
+
+
+ There are three built in locking models, , and .
+ The first locks the file from the start of logging to the end, the
+ second locks only for the minimal amount of time when logging each message
+ and the last synchronizes processes using a named system wide Mutex.
+
+
+ The default locking model is the .
+
+
+
+
+
+ Write only that uses the
+ to manage access to an underlying resource.
+
+
+
+
+ True asynchronous writes are not supported, the implementation forces a synchronous write.
+
+
+
+
+ Exception base type for log4net.
+
+
+
+ This type extends . It
+ does not add any new functionality but does differentiate the
+ type of exception being thrown.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Constructor
+
+ A message to include with the exception.
+
+
+ Initializes a new instance of the class with
+ the specified message.
+
+
+
+
+
+ Constructor
+
+ A message to include with the exception.
+ A nested exception to include.
+
+
+ Initializes a new instance of the class
+ with the specified message and inner exception.
+
+
+
+
+
+ Serialization constructor
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+
+
+ Initializes a new instance of the class
+ with serialized data.
+
+
+
+
+
+ Locking model base class
+
+
+
+ Base class for the locking models available to the derived loggers.
+
+
+
+
+
+ Open the output file
+
+ The filename to use
+ Whether to append to the file, or overwrite
+ The encoding to use
+
+
+ Open the file specified and prepare for logging.
+ No writes will be made until is called.
+ Must be called before any calls to ,
+ and .
+
+
+
+
+
+ Close the file
+
+
+
+ Close the file. No further writes will be made.
+
+
+
+
+
+ Initializes all resources used by this locking model.
+
+
+
+
+ Disposes all resources that were initialized by this locking model.
+
+
+
+
+ Acquire the lock on the file
+
+ A stream that is ready to be written to.
+
+
+ Acquire the lock on the file in preparation for writing to it.
+ Return a stream pointing to the file.
+ must be called to release the lock on the output file.
+
+
+
+
+
+ Release the lock on the file
+
+
+
+ Release the lock on the file. No further writes will be made to the
+ stream until is called again.
+
+
+
+
+
+ Helper method that creates a FileStream under CurrentAppender's SecurityContext.
+
+
+
+ Typically called during OpenFile or AcquireLock.
+
+
+ If the directory portion of the does not exist, it is created
+ via Directory.CreateDirecctory.
+
+
+
+
+
+
+
+
+
+ Helper method to close under CurrentAppender's SecurityContext.
+
+
+ Does not set to null.
+
+
+
+
+
+ Gets or sets the for this LockingModel
+
+
+ The for this LockingModel
+
+
+
+ The file appender this locking model is attached to and working on
+ behalf of.
+
+
+ The file appender is used to locate the security context and the error handler to use.
+
+
+ The value of this property will be set before is
+ called.
+
+
+
+
+
+ Hold an exclusive lock on the output file
+
+
+
+ Open the file once for writing and hold it open until is called.
+ Maintains an exclusive lock on the file during this time.
+
+
+
+
+
+ Open the file specified and prepare for logging.
+
+ The filename to use
+ Whether to append to the file, or overwrite
+ The encoding to use
+
+
+ Open the file specified and prepare for logging.
+ No writes will be made until is called.
+ Must be called before any calls to ,
+ and .
+
+
+
+
+
+ Close the file
+
+
+
+ Close the file. No further writes will be made.
+
+
+
+
+
+ Acquire the lock on the file
+
+ A stream that is ready to be written to.
+
+
+ Does nothing. The lock is already taken
+
+
+
+
+
+ Release the lock on the file
+
+
+
+ Does nothing. The lock will be released when the file is closed.
+
+
+
+
+
+ Initializes all resources used by this locking model.
+
+
+
+
+ Disposes all resources that were initialized by this locking model.
+
+
+
+
+ Acquires the file lock for each write
+
+
+
+ Opens the file once for each / cycle,
+ thus holding the lock for the minimal amount of time. This method of locking
+ is considerably slower than but allows
+ other processes to move/delete the log file whilst logging continues.
+
+
+
+
+
+ Prepares to open the file when the first message is logged.
+
+ The filename to use
+ Whether to append to the file, or overwrite
+ The encoding to use
+
+
+ Open the file specified and prepare for logging.
+ No writes will be made until is called.
+ Must be called before any calls to ,
+ and .
+
+
+
+
+
+ Close the file
+
+
+
+ Close the file. No further writes will be made.
+
+
+
+
+
+ Acquire the lock on the file
+
+ A stream that is ready to be written to.
+
+
+ Acquire the lock on the file in preparation for writing to it.
+ Return a stream pointing to the file.
+ must be called to release the lock on the output file.
+
+
+
+
+
+ Release the lock on the file
+
+
+
+ Release the lock on the file. No further writes will be made to the
+ stream until is called again.
+
+
+
+
+
+ Initializes all resources used by this locking model.
+
+
+
+
+ Disposes all resources that were initialized by this locking model.
+
+
+
+
+ Provides cross-process file locking.
+
+ Ron Grabowski
+ Steve Wranovsky
+
+
+
+ Open the file specified and prepare for logging.
+
+ The filename to use
+ Whether to append to the file, or overwrite
+ The encoding to use
+
+
+ Open the file specified and prepare for logging.
+ No writes will be made until is called.
+ Must be called before any calls to ,
+ - and .
+
+
+
+
+
+ Close the file
+
+
+
+ Close the file. No further writes will be made.
+
+
+
+
+
+ Acquire the lock on the file
+
+ A stream that is ready to be written to.
+
+
+ Does nothing. The lock is already taken
+
+
+
+
+
+ Releases the lock and allows others to acquire a lock.
+
+
+
+
+ Initializes all resources used by this locking model.
+
+
+
+
+ Disposes all resources that were initialized by this locking model.
+
+
+
+
+ This appender forwards logging events to attached appenders.
+
+
+
+ The forwarding appender can be used to specify different thresholds
+ and filters for the same appender at different locations within the hierarchy.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Closes the appender and releases resources.
+
+
+
+ Releases any resources allocated within the appender such as file handles,
+ network connections, etc.
+
+
+ It is a programming error to append to a closed appender.
+
+
+
+
+
+ Forward the logging event to the attached appenders
+
+ The event to log.
+
+
+ Delivers the logging event to all the attached appenders.
+
+
+
+
+
+ Forward the logging events to the attached appenders
+
+ The array of events to log.
+
+
+ Delivers the logging events to all the attached appenders.
+
+
+
+
+
+ Adds an to the list of appenders of this
+ instance.
+
+ The to add to this appender.
+
+
+ If the specified is already in the list of
+ appenders, then it won't be added again.
+
+
+
+
+
+ Looks for the appender with the specified name.
+
+ The name of the appender to lookup.
+
+ The appender with the specified name, or null.
+
+
+
+ Get the named appender attached to this appender.
+
+
+
+
+
+ Removes all previously added appenders from this appender.
+
+
+
+ This is useful when re-reading configuration information.
+
+
+
+
+
+ Removes the specified appender from the list of appenders.
+
+ The appender to remove.
+ The appender removed from the list
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+ Removes the appender with the specified name from the list of appenders.
+
+ The name of the appender to remove.
+ The appender removed from the list
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+ Implementation of the interface
+
+
+
+
+ Gets the appenders contained in this appender as an
+ .
+
+
+ If no appenders can be found, then an
+ is returned.
+
+
+ A collection of the appenders in this appender.
+
+
+
+
+ Logs events to a local syslog service.
+
+
+
+ This appender uses the POSIX libc library functions openlog, syslog, and closelog.
+ If these functions are not available on the local system then this appender will not work!
+
+
+ The functions openlog, syslog, and closelog are specified in SUSv2 and
+ POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.
+
+
+ This appender talks to a local syslog service. If you need to log to a remote syslog
+ daemon and you cannot configure your local syslog service to do this you may be
+ able to use the to log via UDP.
+
+
+ Syslog messages must have a facility and and a severity. The severity
+ is derived from the Level of the logging event.
+ The facility must be chosen from the set of defined syslog
+ values. The facilities list is predefined
+ and cannot be extended.
+
+
+ An identifier is specified with each log message. This can be specified
+ by setting the property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from ).
+
+
+ Rob Lyon
+ Nicko Cadell
+
+
+
+ Initializes a new instance of the class.
+
+
+ This instance of the class is set up to write
+ to a local syslog service.
+
+
+
+
+ Add a mapping of level to severity
+
+ The mapping to add
+
+
+ Adds a to this appender.
+
+
+
+
+
+ Initialize the appender based on the options set.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Writes the event to a remote syslog daemon.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ Close the syslog when the appender is closed
+
+
+
+ Close the syslog when the appender is closed
+
+
+
+
+
+ Translates a log4net level to a syslog severity.
+
+ A log4net level.
+ A syslog severity.
+
+
+ Translates a log4net level to a syslog severity.
+
+
+
+
+
+ Generate a syslog priority.
+
+ The syslog facility.
+ The syslog severity.
+ A syslog priority.
+
+
+
+ The facility. The default facility is .
+
+
+
+
+ The message identity
+
+
+
+
+ Marshaled handle to the identity string. We have to hold on to the
+ string as the openlog and syslog APIs just hold the
+ pointer to the ident and dereference it for each log message.
+
+
+
+
+ Mapping from level object to syslog severity
+
+
+
+
+ Open connection to system logger.
+
+
+
+
+ Generate a log message.
+
+
+
+ The libc syslog method takes a format string and a variable argument list similar
+ to the classic printf function. As this type of vararg list is not supported
+ by C# we need to specify the arguments explicitly. Here we have specified the
+ format string with a single message argument. The caller must set the format
+ string to "%s".
+
+
+
+
+
+ Close descriptor used to write to system logger.
+
+
+
+
+ Message identity
+
+
+
+ An identifier is specified with each log message. This can be specified
+ by setting the property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from ).
+
+
+
+
+
+ Syslog facility
+
+
+ Set to one of the values. The list of
+ facilities is predefined and cannot be extended. The default value
+ is .
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ syslog severities
+
+
+
+ The log4net Level maps to a syslog severity using the
+ method and the
+ class. The severity is set on .
+
+
+
+
+
+ system is unusable
+
+
+
+
+ action must be taken immediately
+
+
+
+
+ critical conditions
+
+
+
+
+ error conditions
+
+
+
+
+ warning conditions
+
+
+
+
+ normal but significant condition
+
+
+
+
+ informational
+
+
+
+
+ debug-level messages
+
+
+
+
+ syslog facilities
+
+
+
+ The syslog facility defines which subsystem the logging comes from.
+ This is set on the property.
+
+
+
+
+
+ kernel messages
+
+
+
+
+ random user-level messages
+
+
+
+
+ mail system
+
+
+
+
+ system daemons
+
+
+
+
+ security/authorization messages
+
+
+
+
+ messages generated internally by syslogd
+
+
+
+
+ line printer subsystem
+
+
+
+
+ network news subsystem
+
+
+
+
+ UUCP subsystem
+
+
+
+
+ clock (cron/at) daemon
+
+
+
+
+ security/authorization messages (private)
+
+
+
+
+ ftp daemon
+
+
+
+
+ NTP subsystem
+
+
+
+
+ log audit
+
+
+
+
+ log alert
+
+
+
+
+ clock daemon
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+
+
+
+
+
+ The mapped syslog severity for the specified level
+
+
+
+ Required property.
+ The mapped syslog severity for the specified level
+
+
+
+
+
+ Appends colorful logging events to the console, using the .NET 2
+ built-in capabilities.
+
+
+
+ ManagedColoredConsoleAppender appends log events to the standard output stream
+ or the error output stream using a layout specified by the
+ user. It also allows the color of a specific type of message to be set.
+
+
+ By default, all output is written to the console's standard output stream.
+ The property can be set to direct the output to the
+ error stream.
+
+
+ When configuring the colored console appender, mappings should be
+ specified to map logging levels to colors. For example:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Level is the standard log4net logging level while
+ ForeColor and BackColor are the values of
+ enumeration.
+
+
+ Based on the ColoredConsoleAppender
+
+
+ Rick Hobbs
+ Nicko Cadell
+ Pavlos Touboulidis
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+ The to use when writing to the Console
+ standard output stream.
+
+
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+ The to use when writing to the Console
+ standard error output stream.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The instance of the class is set up to write
+ to the standard output stream.
+
+
+
+
+ Add a mapping of level to color - done by the config file
+
+ The mapping to add
+
+
+ Add a mapping to this appender.
+ Each mapping defines the foreground and background colors
+ for a level.
+
+
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Writes the event to the console.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ Initialize the options for this appender
+
+
+
+ Initialize the level to color mappings set on this appender.
+
+
+
+
+
+ Flag to write output to the error stream rather than the standard output stream
+
+
+
+
+ Mapping from level object to color value
+
+
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+ Target is the value of the console output stream.
+ This is either "Console.Out" or "Console.Error".
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the color it should be displayed as.
+
+
+
+ Defines the mapping between a level and the color it should be displayed in.
+
+
+
+
+
+ The mapped foreground color for the specified level
+
+
+
+ Required property.
+ The mapped foreground color for the specified level.
+
+
+
+
+
+ The mapped background color for the specified level
+
+
+
+ Required property.
+ The mapped background color for the specified level.
+
+
+
+
+
+ Stores logging events in an array.
+
+
+
+ The memory appender stores all the logging events
+ that are appended in an in-memory array.
+
+
+ Use the method to get
+ and clear the current list of events that have been appended.
+
+
+ Use the method to get the current
+ list of events that have been appended. Note there is a
+ race-condition when calling and
+ in pairs, you better use in that case.
+
+
+ Use the method to clear the
+ current list of events. Note there is a
+ race-condition when calling and
+ in pairs, you better use in that case.
+
+
+ Julian Biddle
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Gets the events that have been logged.
+
+ The events that have been logged
+
+
+ Gets the events that have been logged.
+
+
+
+
+
+ This method is called by the method.
+
+ the event to log
+
+ Stores the in the events list.
+
+
+
+
+ Clear the list of events
+
+
+ Clear the list of events
+
+
+
+
+ Gets the events that have been logged and clears the list of events.
+
+ The events that have been logged
+
+
+ Gets the events that have been logged and clears the list of events.
+
+
+
+
+
+ The list of events that have been appended.
+
+
+
+
+ Value indicating which fields in the event should be fixed
+
+
+ By default all fields are fixed
+
+
+
+
+ Gets or sets a value indicating whether only part of the logging event
+ data should be fixed.
+
+
+ true if the appender should only fix part of the logging event
+ data, otherwise false. The default is false.
+
+
+
+ Setting this property to true will cause only part of the event
+ data to be fixed and stored in the appender, hereby improving performance.
+
+
+ See for more information.
+
+
+
+
+
+ Gets or sets the fields that will be fixed in the event
+
+
+
+ The logging event needs to have certain thread specific values
+ captured before it can be buffered. See
+ for details.
+
+
+
+
+
+ Logs entries by sending network messages using the
+ native function.
+
+
+
+ You can send messages only to names that are active
+ on the network. If you send the message to a user name,
+ that user must be logged on and running the Messenger
+ service to receive the message.
+
+
+ The receiver will get a top most window displaying the
+ messages one at a time, therefore this appender should
+ not be used to deliver a high volume of messages.
+
+
+ The following table lists some possible uses for this appender :
+
+
+
+
+ Action
+ Property Value(s)
+
+
+ Send a message to a user account on the local machine
+
+
+ = <name of the local machine>
+
+
+ = <user name>
+
+
+
+
+ Send a message to a user account on a remote machine
+
+
+ = <name of the remote machine>
+
+
+ = <user name>
+
+
+
+
+ Send a message to a domain user account
+
+
+ = <name of a domain controller | uninitialized>
+
+
+ = <user name>
+
+
+
+
+ Send a message to all the names in a workgroup or domain
+
+
+ = <workgroup name | domain name>*
+
+
+
+
+ Send a message from the local machine to a remote machine
+
+
+ = <name of the local machine | uninitialized>
+
+
+ = <name of the remote machine>
+
+
+
+
+
+
+ Note : security restrictions apply for sending
+ network messages, see
+ for more information.
+
+
+
+
+ An example configuration section to log information
+ using this appender from the local machine, named
+ LOCAL_PC, to machine OPERATOR_PC :
+
+
+
+
+
+
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ The DNS or NetBIOS name of the server on which the function is to execute.
+
+
+
+
+ The sender of the network message.
+
+
+
+
+ The message alias to which the message should be sent.
+
+
+
+
+ The security context to use for privileged calls
+
+
+
+
+ Initializes the appender.
+
+
+ The default constructor initializes all fields to their default values.
+
+
+
+
+ Initialize the appender based on the options set.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ The appender will be ignored if no was specified.
+
+
+ The required property was not specified.
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Sends the event using a network message.
+
+
+
+
+
+ Sends a buffer of information to a registered message alias.
+
+ The DNS or NetBIOS name of the server on which the function is to execute.
+ The message alias to which the message buffer should be sent
+ The originator of the message.
+ The message text.
+ The length, in bytes, of the message text.
+
+
+ The following restrictions apply for sending network messages:
+
+
+
+
+ Platform
+ Requirements
+
+
+ Windows NT
+
+
+ No special group membership is required to send a network message.
+
+
+ Admin, Accounts, Print, or Server Operator group membership is required to
+ successfully send a network message on a remote server.
+
+
+
+
+ Windows 2000 or later
+
+
+ If you send a message on a domain controller that is running Active Directory,
+ access is allowed or denied based on the access control list (ACL) for the securable
+ object. The default ACL permits only Domain Admins and Account Operators to send a network message.
+
+
+ On a member server or workstation, only Administrators and Server Operators can send a network message.
+
+
+
+
+
+
+ For more information see Security Requirements for the Network Management Functions.
+
+
+
+
+ If the function succeeds, the return value is zero.
+
+
+
+
+
+ Gets or sets the sender of the message.
+
+
+ The sender of the message.
+
+
+ If this property is not specified, the message is sent from the local computer.
+
+
+
+
+ Gets or sets the message alias to which the message should be sent.
+
+
+ The recipient of the message.
+
+
+ This property should always be specified in order to send a message.
+
+
+
+
+ Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.
+
+
+ DNS or NetBIOS name of the remote server on which the function is to execute.
+
+
+
+ For Windows NT 4.0 and earlier, the string should begin with \\.
+
+
+ If this property is not specified, the local computer is used.
+
+
+
+
+
+ Gets or sets the used to call the NetSend method.
+
+
+ The used to call the NetSend method.
+
+
+
+ Unless a specified here for this appender
+ the is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Appends log events to the OutputDebugString system.
+
+
+
+ OutputDebugStringAppender appends log events to the
+ OutputDebugString system.
+
+
+ The string is passed to the native OutputDebugString
+ function.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Write the logging event to the output debug string API
+
+ the event to log
+
+
+ Write the logging event to the output debug string API
+
+
+
+
+
+ Stub for OutputDebugString native method
+
+ the string to output
+
+
+ Stub for OutputDebugString native method
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Logs events to a remote syslog daemon.
+
+
+
+ The BSD syslog protocol is used to remotely log to
+ a syslog daemon. The syslogd listens for for messages
+ on UDP port 514.
+
+
+ The syslog UDP protocol is not authenticated. Most syslog daemons
+ do not accept remote log messages because of the security implications.
+ You may be able to use the LocalSyslogAppender to talk to a local
+ syslog service.
+
+
+ There is an RFC 3164 that claims to document the BSD Syslog Protocol.
+ This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.
+ This appender generates what the RFC calls an "Original Device Message",
+ i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation
+ this format of message will be accepted by all current syslog daemon
+ implementations. The daemon will attach the current time and the source
+ hostname or IP address to any messages received.
+
+
+ Syslog messages must have a facility and and a severity. The severity
+ is derived from the Level of the logging event.
+ The facility must be chosen from the set of defined syslog
+ values. The facilities list is predefined
+ and cannot be extended.
+
+
+ An identifier is specified with each log message. This can be specified
+ by setting the property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from ).
+
+
+ Rob Lyon
+ Nicko Cadell
+
+
+
+ Sends logging events as connectionless UDP datagrams to a remote host or a
+ multicast group using an .
+
+
+
+ UDP guarantees neither that messages arrive, nor that they arrive in the correct order.
+
+
+ To view the logging results, a custom application can be developed that listens for logging
+ events.
+
+
+ When decoding events send via this appender remember to use the same encoding
+ to decode the events as was used to send the events. See the
+ property to specify the encoding to use.
+
+
+
+ This example shows how to log receive logging events that are sent
+ on IP address 244.0.0.1 and port 8080 to the console. The event is
+ encoded in the packet as a unicode string and it is decoded as such.
+
+ IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
+ UdpClient udpClient;
+ byte[] buffer;
+ string loggingEvent;
+
+ try
+ {
+ udpClient = new UdpClient(8080);
+
+ while(true)
+ {
+ buffer = udpClient.Receive(ref remoteEndPoint);
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);
+ Console.WriteLine(loggingEvent);
+ }
+ }
+ catch(Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+
+
+ Dim remoteEndPoint as IPEndPoint
+ Dim udpClient as UdpClient
+ Dim buffer as Byte()
+ Dim loggingEvent as String
+
+ Try
+ remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)
+ udpClient = new UdpClient(8080)
+
+ While True
+ buffer = udpClient.Receive(ByRef remoteEndPoint)
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)
+ Console.WriteLine(loggingEvent)
+ Wend
+ Catch e As Exception
+ Console.WriteLine(e.ToString())
+ End Try
+
+
+ An example configuration section to log information using this appender to the
+ IP 224.0.0.1 on port 8080:
+
+
+
+
+
+
+
+
+
+ Gert Driesen
+ Nicko Cadell
+
+
+
+ Initializes a new instance of the class.
+
+
+ The default constructor initializes all fields to their default values.
+
+
+
+
+ Initialize the appender based on the options set.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ The appender will be ignored if no was specified or
+ an invalid remote or local TCP port number was specified.
+
+
+ The required property was not specified.
+ The TCP port number assigned to or is less than or greater than .
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Sends the event using an UDP datagram.
+
+
+ Exceptions are passed to the .
+
+
+
+
+
+ Closes the UDP connection and releases all resources associated with
+ this instance.
+
+
+
+ Disables the underlying and releases all managed
+ and unmanaged resources associated with the .
+
+
+
+
+
+ Initializes the underlying connection.
+
+
+
+ The underlying is initialized and binds to the
+ port number from which you intend to communicate.
+
+
+ Exceptions are passed to the .
+
+
+
+
+
+ The IP address of the remote host or multicast group to which
+ the logging event will be sent.
+
+
+
+
+ The TCP port number of the remote host or multicast group to
+ which the logging event will be sent.
+
+
+
+
+ The cached remote endpoint to which the logging events will be sent.
+
+
+
+
+ The TCP port number from which the will communicate.
+
+
+
+
+ The instance that will be used for sending the
+ logging events.
+
+
+
+
+ The encoding to use for the packet.
+
+
+
+
+ Gets or sets the IP address of the remote host or multicast group to which
+ the underlying should sent the logging event.
+
+
+ The IP address of the remote host or multicast group to which the logging event
+ will be sent.
+
+
+
+ Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to
+ 239.255.255.255). Multicast packets can pass across different networks through routers, so
+ it is possible to use multicasts in an Internet scenario as long as your network provider
+ supports multicasting.
+
+
+ Hosts that want to receive particular multicast messages must register their interest by joining
+ the multicast group. Multicast messages are not sent to networks where no host has joined
+ the multicast group. Class D IP addresses are used for multicast groups, to differentiate
+ them from normal host addresses, allowing nodes to easily detect if a message is of interest.
+
+
+ Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below:
+
+
+
+
+ IP Address
+ Description
+
+
+ 224.0.0.1
+
+
+ Sends a message to all system on the subnet.
+
+
+
+
+ 224.0.0.2
+
+
+ Sends a message to all routers on the subnet.
+
+
+
+
+ 224.0.0.12
+
+
+ The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.
+
+
+
+
+
+
+ A complete list of actually reserved multicast addresses and their owners in the ranges
+ defined by RFC 3171 can be found at the IANA web site.
+
+
+ The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative
+ addresses. These addresses can be reused with other local groups. Routers are typically
+ configured with filters to prevent multicast traffic in this range from flowing outside
+ of the local network.
+
+
+
+
+
+ Gets or sets the TCP port number of the remote host or multicast group to which
+ the underlying should sent the logging event.
+
+
+ An integer value in the range to
+ indicating the TCP port number of the remote host or multicast group to which the logging event
+ will be sent.
+
+
+ The underlying will send messages to this TCP port number
+ on the remote host or multicast group.
+
+ The value specified is less than or greater than .
+
+
+
+ Gets or sets the TCP port number from which the underlying will communicate.
+
+
+ An integer value in the range to
+ indicating the TCP port number from which the underlying will communicate.
+
+
+
+ The underlying will bind to this port for sending messages.
+
+
+ Setting the value to 0 (the default) will cause the udp client not to bind to
+ a local port.
+
+
+ The value specified is less than or greater than .
+
+
+
+ Gets or sets used to write the packets.
+
+
+ The used to write the packets.
+
+
+
+ The used to write the packets.
+
+
+
+
+
+ Gets or sets the underlying .
+
+
+ The underlying .
+
+
+ creates a to send logging events
+ over a network. Classes deriving from can use this
+ property to get or set this . Use the underlying
+ returned from if you require access beyond that which
+ provides.
+
+
+
+
+ Gets or sets the cached remote endpoint to which the logging events should be sent.
+
+
+ The cached remote endpoint to which the logging events will be sent.
+
+
+ The method will initialize the remote endpoint
+ with the values of the and
+ properties.
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Syslog port 514
+
+
+
+
+ Initial buffer size
+
+
+
+
+ Maximum buffer size before it is recycled
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This instance of the class is set up to write
+ to a remote syslog daemon.
+
+
+
+
+ Add a mapping of level to severity
+
+ The mapping to add
+
+
+ Add a mapping to this appender.
+
+
+
+
+
+ This method is called by the method.
+
+ The event to log.
+
+
+ Writes the event to a remote syslog daemon.
+
+
+ The format of the output will depend on the appender's layout.
+
+
+
+
+
+ Initialize the options for this appender
+
+
+
+ Initialize the level to syslog severity mappings set on this appender.
+
+
+
+
+
+ Translates a log4net level to a syslog severity.
+
+ A log4net level.
+ A syslog severity.
+
+
+ Translates a log4net level to a syslog severity.
+
+
+
+
+
+ Generate a syslog priority.
+
+ The syslog facility.
+ The syslog severity.
+ A syslog priority.
+
+
+ Generate a syslog priority.
+
+
+
+
+
+ The facility. The default facility is .
+
+
+
+
+ The message identity
+
+
+
+
+ Mapping from level object to syslog severity
+
+
+
+
+ Message identity
+
+
+
+ An identifier is specified with each log message. This can be specified
+ by setting the property. The identity (also know
+ as the tag) must not contain white space. The default value for the
+ identity is the application name (from ).
+
+
+
+
+
+ Syslog facility
+
+
+ Set to one of the values. The list of
+ facilities is predefined and cannot be extended. The default value
+ is .
+
+
+
+
+ syslog severities
+
+
+
+ The syslog severities.
+
+
+
+
+
+ system is unusable
+
+
+
+
+ action must be taken immediately
+
+
+
+
+ critical conditions
+
+
+
+
+ error conditions
+
+
+
+
+ warning conditions
+
+
+
+
+ normal but significant condition
+
+
+
+
+ informational
+
+
+
+
+ debug-level messages
+
+
+
+
+ syslog facilities
+
+
+
+ The syslog facilities
+
+
+
+
+
+ kernel messages
+
+
+
+
+ random user-level messages
+
+
+
+
+ mail system
+
+
+
+
+ system daemons
+
+
+
+
+ security/authorization messages
+
+
+
+
+ messages generated internally by syslogd
+
+
+
+
+ line printer subsystem
+
+
+
+
+ network news subsystem
+
+
+
+
+ UUCP subsystem
+
+
+
+
+ clock (cron/at) daemon
+
+
+
+
+ security/authorization messages (private)
+
+
+
+
+ ftp daemon
+
+
+
+
+ NTP subsystem
+
+
+
+
+ log audit
+
+
+
+
+ log alert
+
+
+
+
+ clock daemon
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ reserved for local use
+
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+
+
+
+ A class to act as a mapping between the level that a logging call is made at and
+ the syslog severity that is should be logged at.
+
+
+
+
+
+ The mapped syslog severity for the specified level
+
+
+
+ Required property.
+ The mapped syslog severity for the specified level
+
+
+
+
+
+ Delivers logging events to a remote logging sink.
+
+
+
+ This Appender is designed to deliver events to a remote sink.
+ That is any object that implements the
+ interface. It delivers the events using .NET remoting. The
+ object to deliver events to is specified by setting the
+ appenders property.
+
+ The RemotingAppender buffers events before sending them. This allows it to
+ make more efficient use of the remoting infrastructure.
+
+ Once the buffer is full the events are still not sent immediately.
+ They are scheduled to be sent using a pool thread. The effect is that
+ the send occurs asynchronously. This is very important for a
+ number of non obvious reasons. The remoting infrastructure will
+ flow thread local variables (stored in the ),
+ if they are marked as , across the
+ remoting boundary. If the server is not contactable then
+ the remoting infrastructure will clear the
+ objects from the . To prevent a logging failure from
+ having side effects on the calling application the remoting call must be made
+ from a separate thread to the one used by the application. A
+ thread is used for this. If no thread is available then
+ the events will block in the thread pool manager until a thread is available.
+
+ Because the events are sent asynchronously using pool threads it is possible to close
+ this appender before all the queued events have been sent.
+ When closing the appender attempts to wait until all the queued events have been sent, but
+ this will timeout after 30 seconds regardless.
+
+ If this appender is being closed because the
+ event has fired it may not be possible to send all the queued events. During process
+ exit the runtime limits the time that a
+ event handler is allowed to run for. If the runtime terminates the threads before
+ the queued events have been sent then they will be lost. To ensure that all events
+ are sent the appender must be closed before the application exits. See
+ for details on how to shutdown
+ log4net programmatically.
+
+
+ Nicko Cadell
+ Gert Driesen
+ Daniel Cazzulino
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Initialize the appender based on the options set
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Send the contents of the buffer to the remote sink.
+
+
+ The events are not sent immediately. They are scheduled to be sent
+ using a pool thread. The effect is that the send occurs asynchronously.
+ This is very important for a number of non obvious reasons. The remoting
+ infrastructure will flow thread local variables (stored in the ),
+ if they are marked as , across the
+ remoting boundary. If the server is not contactable then
+ the remoting infrastructure will clear the
+ objects from the . To prevent a logging failure from
+ having side effects on the calling application the remoting call must be made
+ from a separate thread to the one used by the application. A
+ thread is used for this. If no thread is available then
+ the events will block in the thread pool manager until a thread is available.
+
+ The events to send.
+
+
+
+ Override base class close.
+
+
+
+ This method waits while there are queued work items. The events are
+ sent asynchronously using work items. These items
+ will be sent once a thread pool thread is available to send them, therefore
+ it is possible to close the appender before all the queued events have been
+ sent.
+
+ This method attempts to wait until all the queued events have been sent, but this
+ method will timeout after 30 seconds regardless.
+
+ If the appender is being closed because the
+ event has fired it may not be possible to send all the queued events. During process
+ exit the runtime limits the time that a
+ event handler is allowed to run for.
+
+
+
+
+ Flushes any buffered log data.
+
+ The maximum time to wait for logging events to be flushed.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ A work item is being queued into the thread pool
+
+
+
+
+ A work item from the thread pool has completed
+
+
+
+
+ Send the contents of the buffer to the remote sink.
+
+
+ This method is designed to be used with the .
+ This method expects to be passed an array of
+ objects in the state param.
+
+ the logging events to send
+
+
+
+ The URL of the remote sink.
+
+
+
+
+ The local proxy (.NET remoting) for the remote logging sink.
+
+
+
+
+ The number of queued callbacks currently waiting or executing
+
+
+
+
+ Event used to signal when there are no queued work items
+
+
+ This event is set when there are no queued work items. In this
+ state it is safe to close the appender.
+
+
+
+
+ Gets or sets the URL of the well-known object that will accept
+ the logging events.
+
+
+ The well-known URL of the remote sink.
+
+
+
+ The URL of the remoting sink that will accept logging events.
+ The sink must implement the
+ interface.
+
+
+
+
+
+ Interface used to deliver objects to a remote sink.
+
+
+ This interface must be implemented by a remoting sink
+ if the is to be used
+ to deliver logging events to the sink.
+
+
+
+
+ Delivers logging events to the remote sink
+
+ Array of events to log.
+
+
+ Delivers logging events to the remote sink
+
+
+
+
+
+ Appender that rolls log files based on size or date or both.
+
+
+
+ RollingFileAppender can roll log files based on size or date or both
+ depending on the setting of the property.
+ When set to the log file will be rolled
+ once its size exceeds the .
+ When set to the log file will be rolled
+ once the date boundary specified in the property
+ is crossed.
+ When set to the log file will be
+ rolled once the date boundary specified in the property
+ is crossed, but within a date boundary the file will also be rolled
+ once its size exceeds the .
+ When set to the log file will be rolled when
+ the appender is configured. This effectively means that the log file can be
+ rolled once per program execution.
+
+
+ A of few additional optional features have been added:
+
+ Attach date pattern for current log file
+ Backup number increments for newer files
+ Infinite number of backups by file size
+
+
+
+
+
+ For large or infinite numbers of backup files a
+ greater than zero is highly recommended, otherwise all the backup files need
+ to be renamed each time a new backup is created.
+
+
+ When Date/Time based rolling is used setting
+ to will reduce the number of file renamings to few or none.
+
+
+
+
+
+ Changing or without clearing
+ the log file directory of backup files will cause unexpected and unwanted side effects.
+
+
+
+
+ If Date/Time based rolling is enabled this appender will attempt to roll existing files
+ in the directory without a Date/Time tag based on the last write date of the base log file.
+ The appender only rolls the log file when a message is logged. If Date/Time based rolling
+ is enabled then the appender will not roll the log file at the Date/Time boundary but
+ at the point when the next message is logged after the boundary has been crossed.
+
+
+
+ The extends the and
+ has the same behavior when opening the log file.
+ The appender will first try to open the file for writing when
+ is called. This will typically be during configuration.
+ If the file cannot be opened for writing the appender will attempt
+ to open the file again each time a message is logged to the appender.
+ If the file cannot be opened for writing when a message is logged then
+ the message will be discarded by this appender.
+
+
+ When rolling a backup file necessitates deleting an older backup file the
+ file to be deleted is moved to a temporary name before being deleted.
+
+
+
+
+ A maximum number of backup files when rolling on date/time boundaries is not supported.
+
+
+
+ Nicko Cadell
+ Gert Driesen
+ Aspi Havewala
+ Douglas de la Torre
+ Edward Smit
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Cleans up all resources used by this appender.
+
+
+
+
+ The fully qualified type of the RollingFileAppender class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Sets the quiet writer being used.
+
+
+ This method can be overridden by sub classes.
+
+ the writer to set
+
+
+
+ Write out a logging event.
+
+ the event to write to file.
+
+
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+
+
+
+
+
+ Write out an array of logging events.
+
+ the events to write to file.
+
+
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+
+
+
+
+
+ Performs any required rolling before outputting the next event
+
+
+
+ Handles append time behavior for RollingFileAppender. This checks
+ if a roll over either by date (checked first) or time (checked second)
+ is need and then appends to the file last.
+
+
+
+
+
+ Creates and opens the file for logging. If
+ is false then the fully qualified name is determined and used.
+
+ the name of the file to open
+ true to append to existing file
+
+ This method will ensure that the directory structure
+ for the specified exists.
+
+
+
+
+ Get the current output file name
+
+ the base file name
+ the output file name
+
+ The output file name is based on the base fileName specified.
+ If is set then the output
+ file name is the same as the base file passed in. Otherwise
+ the output file depends on the date pattern, on the count
+ direction or both.
+
+
+
+
+ Determines curSizeRollBackups (only within the current roll point)
+
+
+
+
+ Generates a wildcard pattern that can be used to find all files
+ that are similar to the base file name.
+
+
+
+
+
+
+ Builds a list of filenames for all files matching the base filename plus a file
+ pattern.
+
+
+
+
+
+
+ Initiates a roll over if needed for crossing a date boundary since the last run.
+
+
+
+
+ Initializes based on existing conditions at time of .
+
+
+
+ Initializes based on existing conditions at time of .
+ The following is done
+
+ determine curSizeRollBackups (only within the current roll point)
+ initiates a roll over if needed for crossing a date boundary since the last run.
+
+
+
+
+
+
+ Does the work of bumping the 'current' file counter higher
+ to the highest count when an incremental file name is seen.
+ The highest count is either the first file (when count direction
+ is greater than 0) or the last file (when count direction less than 0).
+ In either case, we want to know the highest count that is present.
+
+
+
+
+
+
+ Attempts to extract a number from the end of the file name that indicates
+ the number of the times the file has been rolled over.
+
+
+ Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.
+
+
+
+
+
+
+ Takes a list of files and a base file name, and looks for
+ 'incremented' versions of the base file. Bumps the max
+ count up to the highest count seen.
+
+
+
+
+
+
+ Calculates the RollPoint for the datePattern supplied.
+
+ the date pattern to calculate the check period for
+ The RollPoint that is most accurate for the date pattern supplied
+
+ Essentially the date pattern is examined to determine what the
+ most suitable roll point is. The roll point chosen is the roll point
+ with the smallest period that can be detected using the date pattern
+ supplied. i.e. if the date pattern only outputs the year, month, day
+ and hour then the smallest roll point that can be detected would be
+ and hourly roll point as minutes could not be detected.
+
+
+
+
+ Initialize the appender based on the options set
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ Sets initial conditions including date/time roll over information, first check,
+ scheduledFilename, and calls to initialize
+ the current number of backups.
+
+
+
+
+
+
+
+
+ .1, .2, .3, etc.
+
+
+
+
+ Rollover the file(s) to date/time tagged file(s).
+
+ set to true if the file to be rolled is currently open
+
+
+ Rollover the file(s) to date/time tagged file(s).
+ Resets curSizeRollBackups.
+ If fileIsOpen is set then the new file is opened (through SafeOpenFile).
+
+
+
+
+
+ Renames file to file .
+
+ Name of existing file to roll.
+ New name for file.
+
+
+ Renames file to file . It
+ also checks for existence of target file and deletes if it does.
+
+
+
+
+
+ Test if a file exists at a specified path
+
+ the path to the file
+ true if the file exists
+
+
+ Test if a file exists at a specified path
+
+
+
+
+
+ Deletes the specified file if it exists.
+
+ The file to delete.
+
+
+ Delete a file if is exists.
+ The file is first moved to a new filename then deleted.
+ This allows the file to be removed even when it cannot
+ be deleted, but it still can be moved.
+
+
+
+
+
+ Implements file roll base on file size.
+
+
+
+ If the maximum number of size based backups is reached
+ (curSizeRollBackups == maxSizeRollBackups) then the oldest
+ file is deleted -- its index determined by the sign of countDirection.
+ If countDirection < 0, then files
+ {File.1, ..., File.curSizeRollBackups -1}
+ are renamed to {File.2, ...,
+ File.curSizeRollBackups}. Moreover, File is
+ renamed File.1 and closed.
+
+
+ A new file is created to receive further log output.
+
+
+ If maxSizeRollBackups is equal to zero, then the
+ File is truncated with no backup files created.
+
+
+ If maxSizeRollBackups < 0, then File is
+ renamed if needed and no files are deleted.
+
+
+
+
+
+ Implements file roll.
+
+ the base name to rename
+
+
+ If the maximum number of size based backups is reached
+ (curSizeRollBackups == maxSizeRollBackups) then the oldest
+ file is deleted -- its index determined by the sign of countDirection.
+ If countDirection < 0, then files
+ {File.1, ..., File.curSizeRollBackups -1}
+ are renamed to {File.2, ...,
+ File.curSizeRollBackups}.
+
+
+ If maxSizeRollBackups is equal to zero, then the
+ File is truncated with no backup files created.
+
+
+ If maxSizeRollBackups < 0, then File is
+ renamed if needed and no files are deleted.
+
+
+ This is called by to rename the files.
+
+
+
+
+
+ Get the start time of the next window for the current rollpoint
+
+ the current date
+ the type of roll point we are working with
+ the start time for the next roll point an interval after the currentDateTime date
+
+
+ Returns the date of the next roll point after the currentDateTime date passed to the method.
+
+
+ The basic strategy is to subtract the time parts that are less significant
+ than the rollpoint from the current time. This should roll the time back to
+ the start of the time window for the current rollpoint. Then we add 1 window
+ worth of time and get the start time of the next window for the rollpoint.
+
+
+
+
+
+ This object supplies the current date/time. Allows test code to plug in
+ a method to control this class when testing date/time based rolling. The default
+ implementation uses the underlying value of DateTime.Now.
+
+
+
+
+ The date pattern. By default, the pattern is set to ".yyyy-MM-dd"
+ meaning daily rollover.
+
+
+
+
+ The actual formatted filename that is currently being written to
+ or will be the file transferred to on roll over
+ (based on staticLogFileName).
+
+
+
+
+ The timestamp when we shall next recompute the filename.
+
+
+
+
+ Holds date of last roll over
+
+
+
+
+ The type of rolling done
+
+
+
+
+ The default maximum file size is 10MB
+
+
+
+
+ There is zero backup files by default
+
+
+
+
+ How many sized based backups have been made so far
+
+
+
+
+ The rolling file count direction.
+
+
+
+
+ The rolling mode used in this appender.
+
+
+
+
+ Cache flag set if we are rolling by date.
+
+
+
+
+ Cache flag set if we are rolling by size.
+
+
+
+
+ Value indicating whether to always log to the same file.
+
+
+
+
+ Value indicating whether to preserve the file name extension when rolling.
+
+
+
+
+ FileName provided in configuration. Used for rolling properly
+
+
+
+
+ A mutex that is used to lock rolling of files.
+
+
+
+
+ The 1st of January 1970 in UTC
+
+
+
+
+ Gets or sets the strategy for determining the current date and time. The default
+ implementation is to use LocalDateTime which internally calls through to DateTime.Now.
+ DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying
+ .
+
+
+ An implementation of the interface which returns the current date and time.
+
+
+
+ Gets or sets the used to return the current date and time.
+
+
+ There are two built strategies for determining the current date and time,
+
+ and .
+
+
+ The default strategy is .
+
+
+
+
+
+ Gets or sets the date pattern to be used for generating file names
+ when rolling over on date.
+
+
+ The date pattern to be used for generating file names when rolling
+ over on date.
+
+
+
+ Takes a string in the same format as expected by
+ .
+
+
+ This property determines the rollover schedule when rolling over
+ on date.
+
+
+
+
+
+ Gets or sets the maximum number of backup files that are kept before
+ the oldest is erased.
+
+
+ The maximum number of backup files that are kept before the oldest is
+ erased.
+
+
+
+ If set to zero, then there will be no backup files and the log file
+ will be truncated when it reaches .
+
+
+ If a negative number is supplied then no deletions will be made. Note
+ that this could result in very slow performance as a large number of
+ files are rolled over unless is used.
+
+
+ The maximum applies to each time based group of files and
+ not the total.
+
+
+
+
+
+ Gets or sets the maximum size that the output file is allowed to reach
+ before being rolled over to backup files.
+
+
+ The maximum size in bytes that the output file is allowed to reach before being
+ rolled over to backup files.
+
+
+
+ This property is equivalent to except
+ that it is required for differentiating the setter taking a
+ argument from the setter taking a
+ argument.
+
+
+ The default maximum file size is 10MB (10*1024*1024).
+
+
+
+
+
+ Gets or sets the maximum size that the output file is allowed to reach
+ before being rolled over to backup files.
+
+
+ The maximum size that the output file is allowed to reach before being
+ rolled over to backup files.
+
+
+
+ This property allows you to specify the maximum size with the
+ suffixes "KB", "MB" or "GB" so that the size is interpreted being
+ expressed respectively in kilobytes, megabytes or gigabytes.
+
+
+ For example, the value "10KB" will be interpreted as 10240 bytes.
+
+
+ The default maximum file size is 10MB.
+
+
+ If you have the option to set the maximum file size programmatically
+ consider using the property instead as this
+ allows you to set the size in bytes as a .
+
+
+
+
+
+ Gets or sets the rolling file count direction.
+
+
+ The rolling file count direction.
+
+
+
+ Indicates if the current file is the lowest numbered file or the
+ highest numbered file.
+
+
+ By default newer files have lower numbers ( < 0),
+ i.e. log.1 is most recent, log.5 is the 5th backup, etc...
+
+
+ >= 0 does the opposite i.e.
+ log.1 is the first backup made, log.5 is the 5th backup made, etc.
+ For infinite backups use >= 0 to reduce
+ rollover costs.
+
+ The default file count direction is -1.
+
+
+
+
+ Gets or sets the rolling style.
+
+ The rolling style.
+
+
+ The default rolling style is .
+
+
+ When set to this appender's
+ property is set to false, otherwise
+ the appender would append to a single file rather than rolling
+ the file each time it is opened.
+
+
+
+
+
+ Gets or sets a value indicating whether to preserve the file name extension when rolling.
+
+
+ true if the file name extension should be preserved.
+
+
+
+ By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.
+ However, under Windows the new file name will loose any program associations as the
+ extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or
+ file.curSizeRollBackup.log to maintain any program associations.
+
+
+
+
+
+ Gets or sets a value indicating whether to always log to
+ the same file.
+
+
+ true if always should be logged to the same file, otherwise false.
+
+
+
+ By default file.log is always the current file. Optionally
+ file.log.yyyy-mm-dd for current formatted datePattern can by the currently
+ logging file (or file.log.curSizeRollBackup or even
+ file.log.yyyy-mm-dd.curSizeRollBackup).
+
+
+ This will make time based rollovers with a large number of backups
+ much faster as the appender it won't have to rename all the backups!
+
+
+
+
+
+ Style of rolling to use
+
+
+
+ Style of rolling to use
+
+
+
+
+
+ Roll files once per program execution
+
+
+
+ Roll files once per program execution.
+ Well really once each time this appender is
+ configured.
+
+
+ Setting this option also sets AppendToFile to
+ false on the RollingFileAppender, otherwise
+ this appender would just be a normal file appender.
+
+
+
+
+
+ Roll files based only on the size of the file
+
+
+
+
+ Roll files based only on the date
+
+
+
+
+ Roll files based on both the size and date of the file
+
+
+
+
+ The code assumes that the following 'time' constants are in a increasing sequence.
+
+
+
+ The code assumes that the following 'time' constants are in a increasing sequence.
+
+
+
+
+
+ Roll the log not based on the date
+
+
+
+
+ Roll the log for each minute
+
+
+
+
+ Roll the log for each hour
+
+
+
+
+ Roll the log twice a day (midday and midnight)
+
+
+
+
+ Roll the log each day (midnight)
+
+
+
+
+ Roll the log each week
+
+
+
+
+ Roll the log each month
+
+
+
+
+ This interface is used to supply Date/Time information to the .
+
+
+ This interface is used to supply Date/Time information to the .
+ Used primarily to allow test classes to plug themselves in so they can
+ supply test date/times.
+
+
+
+
+ Gets the current time.
+
+ The current time.
+
+
+ Gets the current time.
+
+
+
+
+
+ Default implementation of that returns the current time.
+
+
+
+
+ Gets the current time.
+
+ The current time.
+
+
+ Gets the current time.
+
+
+
+
+
+ Implementation of that returns the current time as the coordinated universal time (UTC).
+
+
+
+
+ Gets the current time.
+
+ The current time.
+
+
+ Gets the current time.
+
+
+
+
+
+ Send an e-mail when a specific logging event occurs, typically on errors
+ or fatal errors.
+
+
+
+ The number of logging events delivered in this e-mail depend on
+ the value of option. The
+ keeps only the last
+ logging events in its
+ cyclic buffer. This keeps memory requirements at a reasonable level while
+ still delivering useful application context.
+
+
+ Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.
+ For these features to be enabled you need to ensure that you are using a version of
+ the log4net assembly that is built against the MS .NET 1.1 framework and that you are
+ running the your application on the MS .NET 1.1 runtime. On all other platforms only sending
+ unauthenticated messages to a server listening on port 25 (the default) is supported.
+
+
+ Authentication is supported by setting the property to
+ either or .
+ If using authentication then the
+ and properties must also be set.
+
+
+ To set the SMTP server port use the property. The default port is 25.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ Sends the contents of the cyclic buffer as an e-mail message.
+
+ The logging events to send.
+
+
+
+ Send the email message
+
+ the body text to include in the mail
+
+
+
+ trims leading and trailing commas or semicolons
+
+
+
+
+ Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).
+
+
+
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+
+
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+
+
+
+
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+
+
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+
+
+
+
+
+ Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses
+ that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).
+
+
+
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+
+
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+
+
+
+
+ For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
+
+
+ For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
+
+
+
+
+
+ Gets or sets a semicolon-delimited list of recipient e-mail addresses
+ that will be blind carbon copied.
+
+
+ A semicolon-delimited list of e-mail addresses.
+
+
+
+ A semicolon-delimited list of recipient e-mail addresses.
+
+
+
+
+
+ Gets or sets the e-mail address of the sender.
+
+
+ The e-mail address of the sender.
+
+
+
+ The e-mail address of the sender.
+
+
+
+
+
+ Gets or sets the subject line of the e-mail message.
+
+
+ The subject line of the e-mail message.
+
+
+
+ The subject line of the e-mail message.
+
+
+
+
+
+ Gets or sets the name of the SMTP relay mail server to use to send
+ the e-mail messages.
+
+
+ The name of the e-mail relay server. If SmtpServer is not set, the
+ name of the local SMTP server is used.
+
+
+
+ The name of the e-mail relay server. If SmtpServer is not set, the
+ name of the local SMTP server is used.
+
+
+
+
+
+ Obsolete
+
+
+ Use the BufferingAppenderSkeleton Fix methods instead
+
+
+
+ Obsolete property.
+
+
+
+
+
+ The mode to use to authentication with the SMTP server
+
+
+ Authentication is only available on the MS .NET 1.1 runtime.
+
+ Valid Authentication mode values are: ,
+ , and .
+ The default value is . When using
+ you must specify the
+ and to use to authenticate.
+ When using the Windows credentials for the current
+ thread, if impersonating, or the process will be used to authenticate.
+
+
+
+
+
+ The username to use to authenticate with the SMTP server
+
+
+ Authentication is only available on the MS .NET 1.1 runtime.
+
+ A and must be specified when
+ is set to ,
+ otherwise the username will be ignored.
+
+
+
+
+
+ The password to use to authenticate with the SMTP server
+
+
+ Authentication is only available on the MS .NET 1.1 runtime.
+
+ A and must be specified when
+ is set to ,
+ otherwise the password will be ignored.
+
+
+
+
+
+ The port on which the SMTP server is listening
+
+
+ Server Port is only available on the MS .NET 1.1 runtime.
+
+ The port on which the SMTP server is listening. The default
+ port is 25. The Port can only be changed when running on
+ the MS .NET 1.1 runtime.
+
+
+
+
+
+ Gets or sets the priority of the e-mail message
+
+
+ One of the values.
+
+
+
+ Sets the priority of the e-mails generated by this
+ appender. The default priority is .
+
+
+ If you are using this appender to report errors then
+ you may want to set the priority to .
+
+
+
+
+
+ Enable or disable use of SSL when sending e-mail message
+
+
+ This is available on MS .NET 2.0 runtime and higher
+
+
+
+
+ Gets or sets the reply-to e-mail address.
+
+
+ This is available on MS .NET 2.0 runtime and higher
+
+
+
+
+ Gets or sets the subject encoding to be used.
+
+
+ The default encoding is the operating system's current ANSI codepage.
+
+
+
+
+ Gets or sets the body encoding to be used.
+
+
+ The default encoding is the operating system's current ANSI codepage.
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Values for the property.
+
+
+
+ SMTP authentication modes.
+
+
+
+
+
+ No authentication
+
+
+
+
+ Basic authentication.
+
+
+ Requires a username and password to be supplied
+
+
+
+
+ Integrated authentication
+
+
+ Uses the Windows credentials from the current thread or process to authenticate.
+
+
+
+
+ Send an email when a specific logging event occurs, typically on errors
+ or fatal errors. Rather than sending via smtp it writes a file into the
+ directory specified by . This allows services such
+ as the IIS SMTP agent to manage sending the messages.
+
+
+
+ The configuration for this appender is identical to that of the SMTPAppender,
+ except that instead of specifying the SMTPAppender.SMTPHost you specify
+ .
+
+
+ The number of logging events delivered in this e-mail depend on
+ the value of option. The
+ keeps only the last
+ logging events in its
+ cyclic buffer. This keeps memory requirements at a reasonable level while
+ still delivering useful application context.
+
+
+ Niall Daley
+ Nicko Cadell
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ Sends the contents of the cyclic buffer as an e-mail message.
+
+ The logging events to send.
+
+
+ Sends the contents of the cyclic buffer as an e-mail message.
+
+
+
+
+
+ Activate the options on this appender.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Convert a path into a fully qualified path.
+
+ The path to convert.
+ The fully qualified path.
+
+
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+
+
+
+
+
+ The security context to use for privileged calls
+
+
+
+
+ Gets or sets a semicolon-delimited list of recipient e-mail addresses.
+
+
+ A semicolon-delimited list of e-mail addresses.
+
+
+
+ A semicolon-delimited list of e-mail addresses.
+
+
+
+
+
+ Gets or sets the e-mail address of the sender.
+
+
+ The e-mail address of the sender.
+
+
+
+ The e-mail address of the sender.
+
+
+
+
+
+ Gets or sets the subject line of the e-mail message.
+
+
+ The subject line of the e-mail message.
+
+
+
+ The subject line of the e-mail message.
+
+
+
+
+
+ Gets or sets the path to write the messages to.
+
+
+
+ Gets or sets the path to write the messages to. This should be the same
+ as that used by the agent sending the messages.
+
+
+
+
+
+ Gets or sets the file extension for the generated files
+
+
+ The file extension for the generated files
+
+
+
+ The file extension for the generated files
+
+
+
+
+
+ Gets or sets the used to write to the pickup directory.
+
+
+ The used to write to the pickup directory.
+
+
+
+ Unless a specified here for this appender
+ the is queried for the
+ security context to use. The default behavior is to use the security context
+ of the current thread.
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Appender that allows clients to connect via Telnet to receive log messages
+
+
+
+ The TelnetAppender accepts socket connections and streams logging messages
+ back to the client.
+ The output is provided in a telnet-friendly way so that a log can be monitored
+ over a TCP/IP socket.
+ This allows simple remote monitoring of application logging.
+
+
+ The default is 23 (the telnet port).
+
+
+ Keith Long
+ Nicko Cadell
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ The fully qualified type of the TelnetAppender class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Overrides the parent method to close the socket handler
+
+
+
+ Closes all the outstanding connections.
+
+
+
+
+
+ Initialize the appender based on the options set.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ Create the socket handler and wait for connections
+
+
+
+
+
+ Writes the logging event to each connected client.
+
+ The event to log.
+
+
+ Writes the logging event to each connected client.
+
+
+
+
+
+ Gets or sets the TCP port number on which this will listen for connections.
+
+
+ An integer value in the range to
+ indicating the TCP port number on which this will listen for connections.
+
+
+
+ The default value is 23 (the telnet port).
+
+
+ The value specified is less than
+ or greater than .
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Helper class to manage connected clients
+
+
+
+ The SocketHandler class is used to accept connections from
+ clients. It is threaded so that clients can connect/disconnect
+ asynchronously.
+
+
+
+
+
+ Opens a new server port on
+
+ the local port to listen on for connections
+
+
+ Creates a socket handler on the specified local server port.
+
+
+
+
+
+ Sends a string message to each of the connected clients
+
+ the text to send
+
+
+ Sends a string message to each of the connected clients
+
+
+
+
+
+ Add a client to the internal clients list
+
+ client to add
+
+
+
+ Remove a client from the internal clients list
+
+ client to remove
+
+
+
+ Callback used to accept a connection on the server socket
+
+ The result of the asynchronous operation
+
+
+ On connection adds to the list of connections
+ if there are two many open connections you will be disconnected
+
+
+
+
+
+ Close all network connections
+
+
+
+ Make sure we close all network connections
+
+
+
+
+
+ Test if this handler has active connections
+
+
+ true if this handler has active connections
+
+
+
+ This property will be true while this handler has
+ active connections, that is at least one connection that
+ the handler will attempt to send a message to.
+
+
+
+
+
+ Class that represents a client connected to this handler
+
+
+
+ Class that represents a client connected to this handler
+
+
+
+
+
+ Create this for the specified
+
+ the client's socket
+
+
+ Opens a stream writer on the socket.
+
+
+
+
+
+ Write a string to the client
+
+ string to send
+
+
+ Write a string to the client
+
+
+
+
+
+ Cleanup the clients connection
+
+
+
+ Close the socket connection.
+
+
+
+
+
+ Appends log events to the system.
+
+
+
+ The application configuration file can be used to control what listeners
+ are actually used. See the MSDN documentation for the
+ class for details on configuring the
+ trace system.
+
+
+ Events are written using the System.Diagnostics.Trace.Write(string,string)
+ method. The event's logger name is the default value for the category parameter
+ of the Write method.
+
+
+ Compact Framework
+ The Compact Framework does not support the
+ class for any operation except Assert. When using the Compact Framework this
+ appender will write to the system rather than
+ the Trace system. This appender will therefore behave like the .
+
+
+ Douglas de la Torre
+ Nicko Cadell
+ Gert Driesen
+ Ron Grabowski
+
+
+
+ Initializes a new instance of the .
+
+
+
+ Default constructor.
+
+
+
+
+
+ Initializes a new instance of the
+ with a specified layout.
+
+ The layout to use with this appender.
+
+
+ Obsolete constructor.
+
+
+
+
+
+ Writes the logging event to the system.
+
+ The event to log.
+
+
+ Writes the logging event to the system.
+
+
+
+
+
+ Immediate flush means that the underlying writer or output stream
+ will be flushed at the end of each append operation.
+
+
+
+ Immediate flush is slower but ensures that each append request is
+ actually written. If is set to
+ false, then there is a good chance that the last few
+ logs events are not actually written to persistent media if and
+ when the application crashes.
+
+
+ The default value is true.
+
+
+
+
+ Defaults to %logger
+
+
+
+
+ Flushes any buffered log data.
+
+ The maximum time to wait for logging events to be flushed.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ Gets or sets a value that indicates whether the appender will
+ flush at the end of each write.
+
+
+ The default behavior is to flush at the end of each
+ write. If the option is set tofalse, then the underlying
+ stream can defer writing to physical medium to a later time.
+
+
+ Avoiding the flush operation at the end of each append results
+ in a performance gain of 10 to 20 percent. However, there is safety
+ trade-off involved in skipping flushing. Indeed, when flushing is
+ skipped, then it is likely that the last few log events will not
+ be recorded on disk when the application exits. This is a high
+ price to pay even for a 20% performance gain.
+
+
+
+
+
+ The category parameter sent to the Trace method.
+
+
+
+ Defaults to %logger which will use the logger name of the current
+ as the category parameter.
+
+
+
+
+
+
+
+ This appender requires a to be set.
+
+ true
+
+
+ This appender requires a to be set.
+
+
+
+
+
+ Assembly level attribute that specifies a domain to alias to this assembly's repository.
+
+
+
+ AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.
+
+
+ An assembly's logger repository is defined by its ,
+ however this can be overridden by an assembly loaded before the target assembly.
+
+
+ An assembly can alias another assembly's domain to its repository by
+ specifying this attribute with the name of the target domain.
+
+
+ This attribute can only be specified on the assembly and may be used
+ as many times as necessary to alias all the required domains.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Assembly level attribute that specifies a repository to alias to this assembly's repository.
+
+
+
+ An assembly's logger repository is defined by its ,
+ however this can be overridden by an assembly loaded before the target assembly.
+
+
+ An assembly can alias another assembly's repository to its repository by
+ specifying this attribute with the name of the target repository.
+
+
+ This attribute can only be specified on the assembly and may be used
+ as many times as necessary to alias all the required repositories.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class with
+ the specified repository to alias to this assembly's repository.
+
+ The repository to alias to this assemby's repository.
+
+
+ Initializes a new instance of the class with
+ the specified repository to alias to this assembly's repository.
+
+
+
+
+
+ Gets or sets the repository to alias to this assemby's repository.
+
+
+ The repository to alias to this assemby's repository.
+
+
+
+ The name of the repository to alias to this assemby's repository.
+
+
+
+
+
+ Initializes a new instance of the class with
+ the specified domain to alias to this assembly's repository.
+
+ The domain to alias to this assemby's repository.
+
+
+ Obsolete. Use instead of .
+
+
+
+
+
+ Use this class to quickly configure a .
+
+
+
+ Allows very simple programmatic configuration of log4net.
+
+
+ Only one appender can be configured using this configurator.
+ The appender is set at the root of the hierarchy and all logging
+ events will be delivered to that appender.
+
+
+ Appenders can also implement the interface. Therefore
+ they would require that the method
+ be called after the appenders properties have been configured.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ The fully qualified type of the BasicConfigurator class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+
+ Initializes the log4net system with a default configuration.
+
+
+
+ Initializes the log4net logging system using a
+ that will write to Console.Out. The log messages are
+ formatted using the layout object
+ with the
+ layout style.
+
+
+
+
+
+ Initializes the log4net system using the specified appenders.
+
+ The appenders to use to log all logging events.
+
+
+ Initializes the log4net system using the specified appenders.
+
+
+
+
+
+ Initializes the log4net system using the specified appender.
+
+ The appender to use to log all logging events.
+
+
+ Initializes the log4net system using the specified appender.
+
+
+
+
+
+ Initializes the with a default configuration.
+
+ The repository to configure.
+
+
+ Initializes the specified repository using a
+ that will write to Console.Out. The log messages are
+ formatted using the layout object
+ with the
+ layout style.
+
+
+
+
+
+ Initializes the using the specified appender.
+
+ The repository to configure.
+ The appender to use to log all logging events.
+
+
+ Initializes the using the specified appender.
+
+
+
+
+
+ Initializes the using the specified appenders.
+
+ The repository to configure.
+ The appenders to use to log all logging events.
+
+
+ Initializes the using the specified appender.
+
+
+
+
+
+ Base class for all log4net configuration attributes.
+
+
+ This is an abstract class that must be extended by
+ specific configurators. This attribute allows the
+ configurator to be parameterized by an assembly level
+ attribute.
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor used by subclasses.
+
+ the ordering priority for this configurator
+
+
+ The is used to order the configurator
+ attributes before they are invoked. Higher priority configurators are executed
+ before lower priority ones.
+
+
+
+
+
+ Configures the for the specified assembly.
+
+ The assembly that this attribute was defined on.
+ The repository to configure.
+
+
+ Abstract method implemented by a subclass. When this method is called
+ the subclass should configure the .
+
+
+
+
+
+ Compare this instance to another ConfiguratorAttribute
+
+ the object to compare to
+ see
+
+
+ Compares the priorities of the two instances.
+ Sorts by priority in descending order. Objects with the same priority are
+ randomly ordered.
+
+
+
+
+
+ Assembly level attribute that specifies the logging domain for the assembly.
+
+
+
+ DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.
+
+
+ Assemblies are mapped to logging domains. Each domain has its own
+ logging repository. This attribute specified on the assembly controls
+ the configuration of the domain. The property specifies the name
+ of the domain that this assembly is a part of. The
+ specifies the type of the repository objects to create for the domain. If
+ this attribute is not specified and a is not specified
+ then the assembly will be part of the default shared logging domain.
+
+
+ This attribute can only be specified on the assembly and may only be used
+ once per assembly.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Assembly level attribute that specifies the logging repository for the assembly.
+
+
+
+ Assemblies are mapped to logging repository. This attribute specified
+ on the assembly controls
+ the configuration of the repository. The property specifies the name
+ of the repository that this assembly is a part of. The
+ specifies the type of the object
+ to create for the assembly. If this attribute is not specified or a
+ is not specified then the assembly will be part of the default shared logging repository.
+
+
+ This attribute can only be specified on the assembly and may only be used
+ once per assembly.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Initialize a new instance of the class
+ with the name of the repository.
+
+ The name of the repository.
+
+
+ Initialize the attribute with the name for the assembly's repository.
+
+
+
+
+
+ Gets or sets the name of the logging repository.
+
+
+ The string name to use as the name of the repository associated with this
+ assembly.
+
+
+
+ This value does not have to be unique. Several assemblies can share the
+ same repository. They will share the logging configuration of the repository.
+
+
+
+
+
+ Gets or sets the type of repository to create for this assembly.
+
+
+ The type of repository to create for this assembly.
+
+
+
+ The type of the repository to create for the assembly.
+ The type must implement the
+ interface.
+
+
+ This will be the type of repository created when
+ the repository is created. If multiple assemblies reference the
+ same repository then the repository is only created once using the
+ of the first assembly to call into the
+ repository.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Obsolete. Use RepositoryAttribute instead of DomainAttribute.
+
+
+
+
+
+ Initialize a new instance of the class
+ with the name of the domain.
+
+ The name of the domain.
+
+
+ Obsolete. Use RepositoryAttribute instead of DomainAttribute.
+
+
+
+
+
+ Use this class to initialize the log4net environment using an Xml tree.
+
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+
+ Configures a using an Xml tree.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Private constructor
+
+
+
+
+ Automatically configures the log4net system based on the
+ application's configuration settings.
+
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ log4net that contains the configuration data.
+
+
+
+
+ Automatically configures the using settings
+ stored in the application's configuration file.
+
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ log4net that contains the configuration data.
+
+ The repository to configure.
+
+
+
+ Configures log4net using a log4net element
+
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+ Loads the log4net configuration from the XML element
+ supplied as .
+
+ The element to parse.
+
+
+
+ Configures the using the specified XML
+ element.
+
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+ Loads the log4net configuration from the XML element
+ supplied as .
+
+ The repository to configure.
+ The element to parse.
+
+
+
+ Configures log4net using the specified configuration file.
+
+ The XML file to load the configuration from.
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the log4net configuration data.
+
+
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either MyAppName.exe.config for a
+ normal application on Web.config for an ASP.NET application).
+
+
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+ In the .config file, the path to the log4net can be specified like this :
+
+
+
+
+
+
+
+
+
+
+
+
+ Configures log4net using the specified configuration file.
+
+ A stream to load the XML configuration from.
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+
+ The configuration data must be valid XML. It must contain
+ at least one element called log4net that holds
+ the log4net configuration data.
+
+
+ Note that this method will NOT close the stream parameter.
+
+
+
+
+
+ Configures the using the specified configuration
+ file.
+
+ The repository to configure.
+ The XML file to load the configuration from.
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either MyAppName.exe.config for a
+ normal application on Web.config for an ASP.NET application).
+
+
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+ In the .config file, the path to the log4net can be specified like this :
+
+
+
+
+
+
+
+
+
+
+
+
+ Configures the using the specified configuration
+ file.
+
+ The repository to configure.
+ The stream to load the XML configuration from.
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+
+ The configuration data must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ Note that this method will NOT close the stream parameter.
+
+
+
+
+
+ Configures log4net using the file specified, monitors the file for changes
+ and reloads the configuration if a change is detected.
+
+ The XML file to load the configuration from.
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ The configuration file will be monitored using a
+ and depends on the behavior of that class.
+
+
+ For more information on how to configure log4net using
+ a separate configuration file, see .
+
+
+
+
+
+
+ Configures the using the file specified,
+ monitors the file for changes and reloads the configuration if a change
+ is detected.
+
+ The repository to configure.
+ The XML file to load the configuration from.
+
+
+ DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ The configuration file will be monitored using a
+ and depends on the behavior of that class.
+
+
+ For more information on how to configure log4net using
+ a separate configuration file, see .
+
+
+
+
+
+
+ Assembly level attribute to configure the .
+
+
+
+ AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.
+
+
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+
+
+ Use this attribute to configure the
+ without calling one of the
+ methods.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Assembly level attribute to configure the .
+
+
+
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+
+
+ Use this attribute to configure the
+ without calling one of the
+ methods.
+
+
+ If neither of the or
+ properties are set the configuration is loaded from the application's .config file.
+ If set the property takes priority over the
+ property. The property
+ specifies a path to a file to load the config from. The path is relative to the
+ application's base directory; .
+ The property is used as a postfix to the assembly file name.
+ The config file must be located in the application's base directory; .
+ For example in a console application setting the to
+ config has the same effect as not specifying the or
+ properties.
+
+
+ The property can be set to cause the
+ to watch the configuration file for changes.
+
+
+
+ Log4net will only look for assembly level configuration attributes once.
+ When using the log4net assembly level attributes to control the configuration
+ of log4net you must ensure that the first call to any of the
+ methods is made from the assembly with the configuration
+ attributes.
+
+
+ If you cannot guarantee the order in which log4net calls will be made from
+ different assemblies you must use programmatic configuration instead, i.e.
+ call the method directly.
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ Configures the for the specified assembly.
+
+ The assembly that this attribute was defined on.
+ The repository to configure.
+
+
+ Configure the repository using the .
+ The specified must extend the
+ class otherwise the will not be able to
+ configure it.
+
+
+ The does not extend .
+
+
+
+ Attempt to load configuration from the local file system
+
+ The assembly that this attribute was defined on.
+ The repository to configure.
+
+
+
+ Configure the specified repository using a
+
+ The repository to configure.
+ the FileInfo pointing to the config file
+
+
+
+ Attempt to load configuration from a URI
+
+ The assembly that this attribute was defined on.
+ The repository to configure.
+
+
+
+ The fully qualified type of the XmlConfiguratorAttribute class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets or sets the filename of the configuration file.
+
+
+ The filename of the configuration file.
+
+
+
+ If specified, this is the name of the configuration file to use with
+ the . This file path is relative to the
+ application base directory ().
+
+
+ The takes priority over the .
+
+
+
+
+
+ Gets or sets the extension of the configuration file.
+
+
+ The extension of the configuration file.
+
+
+
+ If specified this is the extension for the configuration file.
+ The path to the config file is built by using the application
+ base directory (),
+ the assembly file name and the config file extension.
+
+
+ If the is set to MyExt then
+ possible config file names would be: MyConsoleApp.exe.MyExt or
+ MyClassLibrary.dll.MyExt.
+
+
+ The takes priority over the .
+
+
+
+
+
+ Gets or sets a value indicating whether to watch the configuration file.
+
+
+ true if the configuration should be watched, false otherwise.
+
+
+
+ If this flag is specified and set to true then the framework
+ will watch the configuration file and will reload the config each time
+ the file is modified.
+
+
+ The config file can only be watched if it is loaded from local disk.
+ In a No-Touch (Smart Client) deployment where the application is downloaded
+ from a web server the config file may not reside on the local disk
+ and therefore it may not be able to watch it.
+
+
+ Watching configuration is not supported on the SSCLI.
+
+
+
+
+
+ Class to register for the log4net section of the configuration file
+
+
+ The log4net section of the configuration file needs to have a section
+ handler registered. This is the section handler used. It simply returns
+ the XML element that is the root of the section.
+
+
+ Example of registering the log4net section handler :
+
+
+
+
+
+
+ log4net configuration XML goes here
+
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Default constructor.
+
+
+
+
+
+ Parses the configuration section.
+
+ The configuration settings in a corresponding parent configuration section.
+ The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.
+ The for the log4net section.
+ The for the log4net section.
+
+
+ Returns the containing the configuration data,
+
+
+
+
+
+ Assembly level attribute that specifies a plugin to attach to
+ the repository.
+
+
+
+ Specifies the type of a plugin to create and attach to the
+ assembly's repository. The plugin type must implement the
+ interface.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Interface used to create plugins.
+
+
+
+ Interface used to create a plugin.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Creates the plugin object.
+
+ the new plugin instance
+
+
+ Create and return a new plugin instance.
+
+
+
+
+
+ Initializes a new instance of the class
+ with the specified type.
+
+ The type name of plugin to create.
+
+
+ Create the attribute with the plugin type specified.
+
+
+ Where possible use the constructor that takes a .
+
+
+
+
+
+ Initializes a new instance of the class
+ with the specified type.
+
+ The type of plugin to create.
+
+
+ Create the attribute with the plugin type specified.
+
+
+
+
+
+ Creates the plugin object defined by this attribute.
+
+
+
+ Creates the instance of the object as
+ specified by this attribute.
+
+
+ The plugin object.
+
+
+
+ Returns a representation of the properties of this object.
+
+
+
+ Overrides base class method to
+ return a representation of the properties of this object.
+
+
+ A representation of the properties of this object
+
+
+
+ Gets or sets the type for the plugin.
+
+
+ The type for the plugin.
+
+
+
+ The type for the plugin.
+
+
+
+
+
+ Gets or sets the type name for the plugin.
+
+
+ The type name for the plugin.
+
+
+
+ The type name for the plugin.
+
+
+ Where possible use the property instead.
+
+
+
+
+
+ Assembly level attribute to configure the .
+
+
+
+ This attribute may only be used at the assembly scope and can only
+ be used once per assembly.
+
+
+ Use this attribute to configure the
+ without calling one of the
+ methods.
+
+
+ Nicko Cadell
+
+
+
+ Construct provider attribute with type specified
+
+ the type of the provider to use
+
+
+ The provider specified must subclass the
+ class.
+
+
+
+
+
+ Configures the SecurityContextProvider
+
+ The assembly that this attribute was defined on.
+ The repository to configure.
+
+
+ Creates a provider instance from the specified.
+ Sets this as the default security context provider .
+
+
+
+
+
+ The fully qualified type of the SecurityContextProviderAttribute class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets or sets the type of the provider to use.
+
+
+ the type of the provider to use.
+
+
+
+ The provider specified must subclass the
+ class.
+
+
+
+
+
+ Use this class to initialize the log4net environment using an Xml tree.
+
+
+
+ Configures a using an Xml tree.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Private constructor
+
+
+
+
+ Automatically configures the using settings
+ stored in the application's configuration file.
+
+
+
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ log4net that contains the configuration data.
+
+
+ To use this method to configure log4net you must specify
+ the section
+ handler for the log4net configuration section. See the
+ for an example.
+
+
+ The repository to configure.
+
+
+
+ Automatically configures the log4net system based on the
+ application's configuration settings.
+
+
+
+ Each application has a configuration file. This has the
+ same name as the application with '.config' appended.
+ This file is XML and calling this function prompts the
+ configurator to look in that file for a section called
+ log4net that contains the configuration data.
+
+
+ To use this method to configure log4net you must specify
+ the section
+ handler for the log4net configuration section. See the
+ for an example.
+
+
+
+
+
+
+ Configures log4net using a log4net element
+
+
+
+ Loads the log4net configuration from the XML element
+ supplied as .
+
+
+ The element to parse.
+
+
+
+ Configures log4net using the specified configuration file.
+
+ The XML file to load the configuration from.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the log4net configuration data.
+
+
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either MyAppName.exe.config for a
+ normal application on Web.config for an ASP.NET application).
+
+
+ The first element matching <configuration> will be read as the
+ configuration. If this file is also a .NET .config file then you must specify
+ a configuration section for the log4net element otherwise .NET will
+ complain. Set the type for the section handler to , for example:
+
+
+
+
+
+
+
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+ In the .config file, the path to the log4net can be specified like this :
+
+
+
+
+
+
+
+
+
+
+
+
+ Configures log4net using the specified configuration URI.
+
+ A URI to load the XML configuration from.
+
+
+ The configuration data must be valid XML. It must contain
+ at least one element called log4net that holds
+ the log4net configuration data.
+
+
+ The must support the URI scheme specified.
+
+
+
+
+
+ Configures log4net using the specified configuration data stream.
+
+ A stream to load the XML configuration from.
+
+
+ The configuration data must be valid XML. It must contain
+ at least one element called log4net that holds
+ the log4net configuration data.
+
+
+ Note that this method will NOT close the stream parameter.
+
+
+
+
+
+ Configures the using the specified XML
+ element.
+
+
+ Loads the log4net configuration from the XML element
+ supplied as .
+
+ The repository to configure.
+ The element to parse.
+
+
+
+ Configures the using the specified configuration
+ file.
+
+ The repository to configure.
+ The XML file to load the configuration from.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ The log4net configuration file can possible be specified in the application's
+ configuration file (either MyAppName.exe.config for a
+ normal application on Web.config for an ASP.NET application).
+
+
+ The first element matching <configuration> will be read as the
+ configuration. If this file is also a .NET .config file then you must specify
+ a configuration section for the log4net element otherwise .NET will
+ complain. Set the type for the section handler to , for example:
+
+
+
+
+
+
+
+ The following example configures log4net using a configuration file, of which the
+ location is stored in the application's configuration file :
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+ In the .config file, the path to the log4net can be specified like this :
+
+
+
+
+
+
+
+
+
+
+
+
+ Configures the using the specified configuration
+ URI.
+
+ The repository to configure.
+ A URI to load the XML configuration from.
+
+
+ The configuration data must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ The must support the URI scheme specified.
+
+
+
+
+
+ Configures the using the specified configuration
+ file.
+
+ The repository to configure.
+ The stream to load the XML configuration from.
+
+
+ The configuration data must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ Note that this method will NOT close the stream parameter.
+
+
+
+
+
+ Configures log4net using the file specified, monitors the file for changes
+ and reloads the configuration if a change is detected.
+
+ The XML file to load the configuration from.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ The configuration file will be monitored using a
+ and depends on the behavior of that class.
+
+
+ For more information on how to configure log4net using
+ a separate configuration file, see .
+
+
+
+
+
+
+ Configures the using the file specified,
+ monitors the file for changes and reloads the configuration if a change
+ is detected.
+
+ The repository to configure.
+ The XML file to load the configuration from.
+
+
+ The configuration file must be valid XML. It must contain
+ at least one element called log4net that holds
+ the configuration data.
+
+
+ The configuration file will be monitored using a
+ and depends on the behavior of that class.
+
+
+ For more information on how to configure log4net using
+ a separate configuration file, see .
+
+
+
+
+
+
+ Configures the specified repository using a log4net element.
+
+ The hierarchy to configure.
+ The element to parse.
+
+
+ Loads the log4net configuration from the XML element
+ supplied as .
+
+
+ This method is ultimately called by one of the Configure methods
+ to load the configuration from an .
+
+
+
+
+
+ Maps repository names to ConfigAndWatchHandler instances to allow a particular
+ ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is
+ reconfigured.
+
+
+
+
+ The fully qualified type of the XmlConfigurator class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Class used to watch config files.
+
+
+
+ Uses the to monitor
+ changes to a specified file. Because multiple change notifications
+ may be raised when the file is modified, a timer is used to
+ compress the notifications into a single event. The timer
+ waits for time before delivering
+ the event notification. If any further
+ change notifications arrive while the timer is waiting it
+ is reset and waits again for to
+ elapse.
+
+
+
+
+
+ The default amount of time to wait after receiving notification
+ before reloading the config file.
+
+
+
+
+ Holds the FileInfo used to configure the XmlConfigurator
+
+
+
+
+ Holds the repository being configured.
+
+
+
+
+ The timer used to compress the notification events.
+
+
+
+
+ Watches file for changes. This object should be disposed when no longer
+ needed to free system handles on the watched resources.
+
+
+
+
+ Initializes a new instance of the class to
+ watch a specified config file used to configure a repository.
+
+ The repository to configure.
+ The configuration file to watch.
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Event handler used by .
+
+ The firing the event.
+ The argument indicates the file that caused the event to be fired.
+
+
+ This handler reloads the configuration from the file when the event is fired.
+
+
+
+
+
+ Event handler used by .
+
+ The firing the event.
+ The argument indicates the file that caused the event to be fired.
+
+
+ This handler reloads the configuration from the file when the event is fired.
+
+
+
+
+
+ Called by the timer when the configuration has been updated.
+
+ null
+
+
+
+ Release the handles held by the watcher and timer.
+
+
+
+
+ The implementation of the interface suitable
+ for use with the compact framework
+
+
+
+ This implementation is a simple
+ mapping between repository name and
+ object.
+
+
+ The .NET Compact Framework 1.0 does not support retrieving assembly
+ level attributes therefore unlike the DefaultRepositorySelector
+ this selector does not examine the calling assembly for attributes.
+
+
+ Nicko Cadell
+
+
+
+ Interface used by the to select the .
+
+
+
+ The uses a
+ to specify the policy for selecting the correct
+ to return to the caller.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Gets the for the specified assembly.
+
+ The assembly to use to lookup to the
+ The for the assembly.
+
+
+ Gets the for the specified assembly.
+
+
+ How the association between and
+ is made is not defined. The implementation may choose any method for
+ this association. The results of this method must be repeatable, i.e.
+ when called again with the same arguments the result must be the
+ save value.
+
+
+
+
+
+ Gets the named .
+
+ The name to use to lookup to the .
+ The named
+
+ Lookup a named . This is the repository created by
+ calling .
+
+
+
+
+ Creates a new repository for the assembly specified.
+
+ The assembly to use to create the domain to associate with the .
+ The type of repository to create, must implement .
+ The repository created.
+
+
+ The created will be associated with the domain
+ specified such that a call to with the
+ same assembly specified will return the same repository instance.
+
+
+ How the association between and
+ is made is not defined. The implementation may choose any method for
+ this association.
+
+
+
+
+
+ Creates a new repository with the name specified.
+
+ The name to associate with the .
+ The type of repository to create, must implement .
+ The repository created.
+
+
+ The created will be associated with the name
+ specified such that a call to with the
+ same name will return the same repository instance.
+
+
+
+
+
+ Test if a named repository exists
+
+ the named repository to check
+ true if the repository exists
+
+
+ Test if a named repository exists. Use
+ to create a new repository and to retrieve
+ a repository.
+
+
+
+
+
+ Gets an array of all currently defined repositories.
+
+
+ An array of the instances created by
+ this .
+
+
+ Gets an array of all of the repositories created by this selector.
+
+
+
+
+
+ Event to notify that a logger repository has been created.
+
+
+ Event to notify that a logger repository has been created.
+
+
+
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a which
+ holds the newly created .
+
+
+
+
+
+ Create a new repository selector
+
+ the type of the repositories to create, must implement
+
+
+ Create an new compact repository selector.
+ The default type for repositories must be specified,
+ an appropriate value would be .
+
+
+ throw if is null
+ throw if does not implement
+
+
+
+ Get the for the specified assembly
+
+ not used
+ The default
+
+
+ The argument is not used. This selector does not create a
+ separate repository for each assembly.
+
+
+ As a named repository is not specified the default repository is
+ returned. The default repository is named log4net-default-repository.
+
+
+
+
+
+ Get the named
+
+ the name of the repository to lookup
+ The named
+
+
+ Get the named . The default
+ repository is log4net-default-repository. Other repositories
+ must be created using the .
+ If the named repository does not exist an exception is thrown.
+
+
+ throw if is null
+ throw if the does not exist
+
+
+
+ Create a new repository for the assembly specified
+
+ not used
+ the type of repository to create, must implement
+ the repository created
+
+
+ The argument is not used. This selector does not create a
+ separate repository for each assembly.
+
+
+ If the is null then the
+ default repository type specified to the constructor is used.
+
+
+ As a named repository is not specified the default repository is
+ returned. The default repository is named log4net-default-repository.
+
+
+
+
+
+ Create a new repository for the repository specified
+
+ the repository to associate with the
+ the type of repository to create, must implement .
+ If this param is null then the default repository type is used.
+ the repository created
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same repository specified will return the same repository instance.
+
+
+ If the named repository already exists an exception will be thrown.
+
+
+ If is null then the default
+ repository type specified to the constructor is used.
+
+
+ throw if is null
+ throw if the already exists
+
+
+
+ Test if a named repository exists
+
+ the named repository to check
+ true if the repository exists
+
+
+ Test if a named repository exists. Use
+ to create a new repository and to retrieve
+ a repository.
+
+
+
+
+
+ Gets a list of objects
+
+ an array of all known objects
+
+
+ Gets an array of all of the repositories created by this selector.
+
+
+
+
+
+ The fully qualified type of the CompactRepositorySelector class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Notify the registered listeners that the repository has been created
+
+ The repository that has been created
+
+
+ Raises the LoggerRepositoryCreatedEvent
+ event.
+
+
+
+
+
+ Event to notify that a logger repository has been created.
+
+
+ Event to notify that a logger repository has been created.
+
+
+
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a which
+ holds the newly created .
+
+
+
+
+
+ The default implementation of the interface.
+
+
+
+ Uses attributes defined on the calling assembly to determine how to
+ configure the hierarchy for the repository.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Creates a new repository selector.
+
+ The type of the repositories to create, must implement
+
+
+ Create an new repository selector.
+ The default type for repositories must be specified,
+ an appropriate value would be .
+
+
+ is .
+ does not implement .
+
+
+
+ Gets the for the specified assembly.
+
+ The assembly use to lookup the .
+
+
+ The type of the created and the repository
+ to create can be overridden by specifying the
+ attribute on the .
+
+
+ The default values are to use the
+ implementation of the interface and to use the
+ as the name of the repository.
+
+
+ The created will be automatically configured using
+ any attributes defined on
+ the .
+
+
+ The for the assembly
+ is .
+
+
+
+ Gets the for the specified repository.
+
+ The repository to use to lookup the .
+ The for the specified repository.
+
+
+ Returns the named repository. If is null
+ a is thrown. If the repository
+ does not exist a is thrown.
+
+
+ Use to create a repository.
+
+
+ is .
+ does not exist.
+
+
+
+ Create a new repository for the assembly specified
+
+ the assembly to use to create the repository to associate with the .
+ The type of repository to create, must implement .
+ The repository created.
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same assembly specified will return the same repository instance.
+
+
+ The type of the created and
+ the repository to create can be overridden by specifying the
+ attribute on the
+ . The default values are to use the
+ implementation of the
+ interface and to use the
+ as the name of the repository.
+
+
+ The created will be automatically
+ configured using any
+ attributes defined on the .
+
+
+ If a repository for the already exists
+ that repository will be returned. An error will not be raised and that
+ repository may be of a different type to that specified in .
+ Also the attribute on the
+ assembly may be used to override the repository type specified in
+ .
+
+
+ is .
+
+
+
+ Creates a new repository for the assembly specified.
+
+ the assembly to use to create the repository to associate with the .
+ The type of repository to create, must implement .
+ The name to assign to the created repository
+ Set to true to read and apply the assembly attributes
+ The repository created.
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same assembly specified will return the same repository instance.
+
+
+ The type of the created and
+ the repository to create can be overridden by specifying the
+ attribute on the
+ . The default values are to use the
+ implementation of the
+ interface and to use the
+ as the name of the repository.
+
+
+ The created will be automatically
+ configured using any
+ attributes defined on the .
+
+
+ If a repository for the already exists
+ that repository will be returned. An error will not be raised and that
+ repository may be of a different type to that specified in .
+ Also the attribute on the
+ assembly may be used to override the repository type specified in
+ .
+
+
+ is .
+
+
+
+ Creates a new repository for the specified repository.
+
+ The repository to associate with the .
+ The type of repository to create, must implement .
+ If this param is then the default repository type is used.
+ The new repository.
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same repository specified will return the same repository instance.
+
+
+ is .
+ already exists.
+
+
+
+ Test if a named repository exists
+
+ the named repository to check
+ true if the repository exists
+
+
+ Test if a named repository exists. Use
+ to create a new repository and to retrieve
+ a repository.
+
+
+
+
+
+ Gets a list of objects
+
+ an array of all known objects
+
+
+ Gets an array of all of the repositories created by this selector.
+
+
+
+
+
+ Aliases a repository to an existing repository.
+
+ The repository to alias.
+ The repository that the repository is aliased to.
+
+
+ The repository specified will be aliased to the repository when created.
+ The repository must not already exist.
+
+
+ When the repository is created it must utilize the same repository type as
+ the repository it is aliased to, otherwise the aliasing will fail.
+
+
+
+ is .
+ -or-
+ is .
+
+
+
+
+ Notifies the registered listeners that the repository has been created.
+
+ The repository that has been created.
+
+
+ Raises the event.
+
+
+
+
+
+ Gets the repository name and repository type for the specified assembly.
+
+ The assembly that has a .
+ in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.
+ in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.
+ is .
+
+
+
+ Configures the repository using information from the assembly.
+
+ The assembly containing
+ attributes which define the configuration for the repository.
+ The repository to configure.
+
+ is .
+ -or-
+ is .
+
+
+
+
+ Loads the attribute defined plugins on the assembly.
+
+ The assembly that contains the attributes.
+ The repository to add the plugins to.
+
+ is .
+ -or-
+ is .
+
+
+
+
+ Loads the attribute defined aliases on the assembly.
+
+ The assembly that contains the attributes.
+ The repository to alias to.
+
+ is .
+ -or-
+ is .
+
+
+
+
+ The fully qualified type of the DefaultRepositorySelector class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Event to notify that a logger repository has been created.
+
+
+ Event to notify that a logger repository has been created.
+
+
+
+ Event raised when a new repository is created.
+ The event source will be this selector. The event args will
+ be a which
+ holds the newly created .
+
+
+
+
+
+ Defined error codes that can be passed to the method.
+
+
+
+ Values passed to the method.
+
+
+ Nicko Cadell
+
+
+
+ A general error
+
+
+
+
+ Error while writing output
+
+
+
+
+ Failed to flush file
+
+
+
+
+ Failed to close file
+
+
+
+
+ Unable to open output file
+
+
+
+
+ No layout specified
+
+
+
+
+ Failed to parse address
+
+
+
+
+ An evaluator that triggers on an Exception type
+
+
+
+ This evaluator will trigger if the type of the Exception
+ passed to
+ is equal to a Type in . ///
+
+
+ Drew Schaeffer
+
+
+
+ Test if an triggers an action
+
+
+
+ Implementations of this interface allow certain appenders to decide
+ when to perform an appender specific action.
+
+
+ The action or behavior triggered is defined by the implementation.
+
+
+ Nicko Cadell
+
+
+
+ Test if this event triggers the action
+
+ The event to check
+ true if this event triggers the action, otherwise false
+
+
+ Return true if this event triggers the action
+
+
+
+
+
+ The type that causes the trigger to fire.
+
+
+
+
+ Causes subclasses of to cause the trigger to fire.
+
+
+
+
+ Default ctor to allow dynamic creation through a configurator.
+
+
+
+
+ Constructs an evaluator and initializes to trigger on
+
+ the type that triggers this evaluator.
+ If true, this evaluator will trigger on subclasses of .
+
+
+
+ Is this the triggering event?
+
+ The event to check
+ This method returns true, if the logging event Exception
+ Type is .
+ Otherwise it returns false
+
+
+ This evaluator will trigger if the Exception Type of the event
+ passed to
+ is .
+
+
+
+
+
+ The type that triggers this evaluator.
+
+
+
+
+ If true, this evaluator will trigger on subclasses of .
+
+
+
+
+ Appenders may delegate their error handling to an .
+
+
+
+ Error handling is a particularly tedious to get right because by
+ definition errors are hard to predict and to reproduce.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Handles the error and information about the error condition is passed as
+ a parameter.
+
+ The message associated with the error.
+ The that was thrown when the error occurred.
+ The error code associated with the error.
+
+
+ Handles the error and information about the error condition is passed as
+ a parameter.
+
+
+
+
+
+ Prints the error message passed as a parameter.
+
+ The message associated with the error.
+ The that was thrown when the error occurred.
+
+
+ See .
+
+
+
+
+
+ Prints the error message passed as a parameter.
+
+ The message associated with the error.
+
+
+ See .
+
+
+
+
+
+ Interface for objects that require fixing.
+
+
+
+ Interface that indicates that the object requires fixing before it
+ can be taken outside the context of the appender's
+ method.
+
+
+ When objects that implement this interface are stored
+ in the context properties maps
+ and
+ are fixed
+ (see ) the
+ method will be called.
+
+
+ Nicko Cadell
+
+
+
+ Get a portable version of this object
+
+ the portable instance of this object
+
+
+ Get a portable instance object that represents the current
+ state of this object. The portable object can be stored
+ and logged from any thread with identical results.
+
+
+
+
+
+ Interface that all loggers implement
+
+
+
+ This interface supports logging events and testing if a level
+ is enabled for logging.
+
+
+ These methods will not throw exceptions. Note to implementor, ensure
+ that the implementation of these methods cannot allow an exception
+ to be thrown to the caller.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ This generic form is intended to be used by wrappers.
+
+ The declaring type of the method that is
+ the stack boundary into the logging system for this call.
+ The level of the message to be logged.
+ The message object to log.
+ the exception to log, including its stack trace. Pass null to not log an exception.
+
+
+ Generates a logging event for the specified using
+ the and .
+
+
+
+
+
+ This is the most generic printing method that is intended to be used
+ by wrappers.
+
+ The event being logged.
+
+
+ Logs the specified logging event through this logger.
+
+
+
+
+
+ Checks if this logger is enabled for a given passed as parameter.
+
+ The level to check.
+
+ true if this logger is enabled for level, otherwise false.
+
+
+
+ Test if this logger is going to log events of the specified .
+
+
+
+
+
+ Gets the name of the logger.
+
+
+ The name of the logger.
+
+
+
+ The name of this logger
+
+
+
+
+
+ Gets the where this
+ Logger instance is attached to.
+
+
+ The that this logger belongs to.
+
+
+
+ Gets the where this
+ Logger instance is attached to.
+
+
+
+
+
+ Base interface for all wrappers
+
+
+
+ Base interface for all wrappers.
+
+
+ All wrappers must implement this interface.
+
+
+ Nicko Cadell
+
+
+
+ Get the implementation behind this wrapper object.
+
+
+ The object that in implementing this object.
+
+
+
+ The object that in implementing this
+ object. The Logger object may not
+ be the same object as this object because of logger decorators.
+ This gets the actual underlying objects that is used to process
+ the log events.
+
+
+
+
+
+ Delegate used to handle logger repository creation event notifications
+
+ The which created the repository.
+ The event args
+ that holds the instance that has been created.
+
+
+ Delegate used to handle logger repository creation event notifications.
+
+
+
+
+
+ Provides data for the event.
+
+
+
+ A
+ event is raised every time a is created.
+
+
+
+
+
+ The created
+
+
+
+
+ Construct instance using specified
+
+ the that has been created
+
+
+ Construct instance using specified
+
+
+
+
+
+ The that has been created
+
+
+ The that has been created
+
+
+
+ The that has been created
+
+
+
+
+
+ Defines the default set of levels recognized by the system.
+
+
+
+ Each has an associated .
+
+
+ Levels have a numeric that defines the relative
+ ordering between levels. Two Levels with the same
+ are deemed to be equivalent.
+
+
+ The levels that are recognized by log4net are set for each
+ and each repository can have different levels defined. The levels are stored
+ in the on the repository. Levels are
+ looked up by name from the .
+
+
+ When logging at level INFO the actual level used is not but
+ the value of LoggerRepository.LevelMap["INFO"]. The default value for this is
+ , but this can be changed by reconfiguring the level map.
+
+
+ Each level has a in addition to its . The
+ is the string that is written into the output log. By default
+ the display name is the same as the level name, but this can be used to alias levels
+ or to localize the log output.
+
+
+ Some of the predefined levels recognized by the system are:
+
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+ Integer value for this level, higher values represent more severe levels.
+ The string name of this level.
+ The display name for this level. This may be localized or otherwise different from the name
+
+
+ Initializes a new instance of the class with
+ the specified level name and value.
+
+
+
+
+
+ Constructor
+
+ Integer value for this level, higher values represent more severe levels.
+ The string name of this level.
+
+
+ Initializes a new instance of the class with
+ the specified level name and value.
+
+
+
+
+
+ Returns the representation of the current
+ .
+
+
+ A representation of the current .
+
+
+
+ Returns the level .
+
+
+
+
+
+ Compares levels.
+
+ The object to compare against.
+ true if the objects are equal.
+
+
+ Compares the levels of instances, and
+ defers to base class if the target object is not a
+ instance.
+
+
+
+
+
+ Returns a hash code
+
+ A hash code for the current .
+
+
+ Returns a hash code suitable for use in hashing algorithms and data
+ structures like a hash table.
+
+
+ Returns the hash code of the level .
+
+
+
+
+
+ Compares this instance to a specified object and returns an
+ indication of their relative values.
+
+ A instance or to compare with this instance.
+
+ A 32-bit signed integer that indicates the relative order of the
+ values compared. The return value has these meanings:
+
+
+ Value
+ Meaning
+
+
+ Less than zero
+ This instance is less than .
+
+
+ Zero
+ This instance is equal to .
+
+
+ Greater than zero
+
+ This instance is greater than .
+ -or-
+ is .
+
+
+
+
+
+
+ must be an instance of
+ or ; otherwise, an exception is thrown.
+
+
+ is not a .
+
+
+
+ Returns a value indicating whether a specified
+ is greater than another specified .
+
+ A
+ A
+
+ true if is greater than
+ ; otherwise, false.
+
+
+
+ Compares two levels.
+
+
+
+
+
+ Returns a value indicating whether a specified
+ is less than another specified .
+
+ A
+ A
+
+ true if is less than
+ ; otherwise, false.
+
+
+
+ Compares two levels.
+
+
+
+
+
+ Returns a value indicating whether a specified
+ is greater than or equal to another specified .
+
+ A
+ A
+
+ true if is greater than or equal to
+ ; otherwise, false.
+
+
+
+ Compares two levels.
+
+
+
+
+
+ Returns a value indicating whether a specified
+ is less than or equal to another specified .
+
+ A
+ A
+
+ true if is less than or equal to
+ ; otherwise, false.
+
+
+
+ Compares two levels.
+
+
+
+
+
+ Returns a value indicating whether two specified
+ objects have the same value.
+
+ A or .
+ A or .
+
+ true if the value of is the same as the
+ value of ; otherwise, false.
+
+
+
+ Compares two levels.
+
+
+
+
+
+ Returns a value indicating whether two specified
+ objects have different values.
+
+ A or .
+ A or .
+
+ true if the value of is different from
+ the value of ; otherwise, false.
+
+
+
+ Compares two levels.
+
+
+
+
+
+ Compares two specified instances.
+
+ The first to compare.
+ The second to compare.
+
+ A 32-bit signed integer that indicates the relative order of the
+ two values compared. The return value has these meanings:
+
+
+ Value
+ Meaning
+
+
+ Less than zero
+ is less than .
+
+
+ Zero
+ is equal to .
+
+
+ Greater than zero
+ is greater than .
+
+
+
+
+
+ Compares two levels.
+
+
+
+
+
+ The level designates a higher level than all the rest.
+
+
+
+
+ The level designates very severe error events.
+ System unusable, emergencies.
+
+
+
+
+ The level designates very severe error events.
+ System unusable, emergencies.
+
+
+
+
+ The level designates very severe error events
+ that will presumably lead the application to abort.
+
+
+
+
+ The level designates very severe error events.
+ Take immediate action, alerts.
+
+
+
+
+ The level designates very severe error events.
+ Critical condition, critical.
+
+
+
+
+ The level designates very severe error events.
+
+
+
+
+ The level designates error events that might
+ still allow the application to continue running.
+
+
+
+
+ The level designates potentially harmful
+ situations.
+
+
+
+
+ The level designates informational messages
+ that highlight the progress of the application at the highest level.
+
+
+
+
+ The level designates informational messages that
+ highlight the progress of the application at coarse-grained level.
+
+
+
+
+ The level designates fine-grained informational
+ events that are most useful to debug an application.
+
+
+
+
+ The level designates fine-grained informational
+ events that are most useful to debug an application.
+
+
+
+
+ The level designates fine-grained informational
+ events that are most useful to debug an application.
+
+
+
+
+ The level designates fine-grained informational
+ events that are most useful to debug an application.
+
+
+
+
+ The level designates fine-grained informational
+ events that are most useful to debug an application.
+
+
+
+
+ The level designates fine-grained informational
+ events that are most useful to debug an application.
+
+
+
+
+ The level designates the lowest level possible.
+
+
+
+
+ Gets the name of this level.
+
+
+ The name of this level.
+
+
+
+ Gets the name of this level.
+
+
+
+
+
+ Gets the value of this level.
+
+
+ The value of this level.
+
+
+
+ Gets the value of this level.
+
+
+
+
+
+ Gets the display name of this level.
+
+
+ The display name of this level.
+
+
+
+ Gets the display name of this level.
+
+
+
+
+
+ A strongly-typed collection of objects.
+
+ Nicko Cadell
+
+
+
+ Creates a read-only wrapper for a LevelCollection instance.
+
+ list to create a readonly wrapper arround
+
+ A LevelCollection wrapper that is read-only.
+
+
+
+
+ Initializes a new instance of the LevelCollection class
+ that is empty and has the default initial capacity.
+
+
+
+
+ Initializes a new instance of the LevelCollection class
+ that has the specified initial capacity.
+
+
+ The number of elements that the new LevelCollection is initially capable of storing.
+
+
+
+
+ Initializes a new instance of the LevelCollection class
+ that contains elements copied from the specified LevelCollection.
+
+ The LevelCollection whose elements are copied to the new collection.
+
+
+
+ Initializes a new instance of the LevelCollection class
+ that contains elements copied from the specified array.
+
+ The array whose elements are copied to the new list.
+
+
+
+ Initializes a new instance of the LevelCollection class
+ that contains elements copied from the specified collection.
+
+ The collection whose elements are copied to the new list.
+
+
+
+ Allow subclasses to avoid our default constructors
+
+
+
+
+
+ Copies the entire LevelCollection to a one-dimensional
+ array.
+
+ The one-dimensional array to copy to.
+
+
+
+ Copies the entire LevelCollection to a one-dimensional
+ array, starting at the specified index of the target array.
+
+ The one-dimensional array to copy to.
+ The zero-based index in at which copying begins.
+
+
+
+ Adds a to the end of the LevelCollection.
+
+ The to be added to the end of the LevelCollection.
+ The index at which the value has been added.
+
+
+
+ Removes all elements from the LevelCollection.
+
+
+
+
+ Creates a shallow copy of the .
+
+ A new with a shallow copy of the collection data.
+
+
+
+ Determines whether a given is in the LevelCollection.
+
+ The to check for.
+ true if is found in the LevelCollection; otherwise, false.
+
+
+
+ Returns the zero-based index of the first occurrence of a
+ in the LevelCollection.
+
+ The to locate in the LevelCollection.
+
+ The zero-based index of the first occurrence of
+ in the entire LevelCollection, if found; otherwise, -1.
+
+
+
+
+ Inserts an element into the LevelCollection at the specified index.
+
+ The zero-based index at which should be inserted.
+ The to insert.
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Removes the first occurrence of a specific from the LevelCollection.
+
+ The to remove from the LevelCollection.
+
+ The specified was not found in the LevelCollection.
+
+
+
+
+ Removes the element at the specified index of the LevelCollection.
+
+ The zero-based index of the element to remove.
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Returns an enumerator that can iterate through the LevelCollection.
+
+ An for the entire LevelCollection.
+
+
+
+ Adds the elements of another LevelCollection to the current LevelCollection.
+
+ The LevelCollection whose elements should be added to the end of the current LevelCollection.
+ The new of the LevelCollection.
+
+
+
+ Adds the elements of a array to the current LevelCollection.
+
+ The array whose elements should be added to the end of the LevelCollection.
+ The new of the LevelCollection.
+
+
+
+ Adds the elements of a collection to the current LevelCollection.
+
+ The collection whose elements should be added to the end of the LevelCollection.
+ The new of the LevelCollection.
+
+
+
+ Sets the capacity to the actual number of elements.
+
+
+
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Gets the number of elements actually contained in the LevelCollection.
+
+
+
+
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+
+ false, because the backing type is an array, which is never thread-safe.
+
+
+
+ Gets an object that can be used to synchronize access to the collection.
+
+
+
+
+ Gets or sets the at the specified index.
+
+ The zero-based index of the element to get or set.
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Gets a value indicating whether the collection has a fixed size.
+
+ true if the collection has a fixed size; otherwise, false. The default is false
+
+
+
+ Gets a value indicating whether the IList is read-only.
+
+ true if the collection is read-only; otherwise, false. The default is false
+
+
+
+ Gets or sets the number of elements the LevelCollection can contain.
+
+
+
+
+ Supports type-safe iteration over a .
+
+
+
+
+ Advances the enumerator to the next element in the collection.
+
+
+ true if the enumerator was successfully advanced to the next element;
+ false if the enumerator has passed the end of the collection.
+
+
+ The collection was modified after the enumerator was created.
+
+
+
+
+ Sets the enumerator to its initial position, before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Type visible only to our subclasses
+ Used to access protected constructor
+
+
+
+
+ A value
+
+
+
+
+ Supports simple iteration over a .
+
+
+
+
+ Initializes a new instance of the Enumerator class.
+
+
+
+
+
+ Advances the enumerator to the next element in the collection.
+
+
+ true if the enumerator was successfully advanced to the next element;
+ false if the enumerator has passed the end of the collection.
+
+
+ The collection was modified after the enumerator was created.
+
+
+
+
+ Sets the enumerator to its initial position, before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ An evaluator that triggers at a threshold level
+
+
+
+ This evaluator will trigger if the level of the event
+ passed to
+ is equal to or greater than the
+ level.
+
+
+ Nicko Cadell
+
+
+
+ The threshold for triggering
+
+
+
+
+ Create a new evaluator using the threshold.
+
+
+
+ Create a new evaluator using the threshold.
+
+
+ This evaluator will trigger if the level of the event
+ passed to
+ is equal to or greater than the
+ level.
+
+
+
+
+
+ Create a new evaluator using the specified threshold.
+
+ the threshold to trigger at
+
+
+ Create a new evaluator using the specified threshold.
+
+
+ This evaluator will trigger if the level of the event
+ passed to
+ is equal to or greater than the
+ level.
+
+
+
+
+
+ Is this the triggering event?
+
+ The event to check
+ This method returns true, if the event level
+ is equal or higher than the .
+ Otherwise it returns false
+
+
+ This evaluator will trigger if the level of the event
+ passed to
+ is equal to or greater than the
+ level.
+
+
+
+
+
+ the threshold to trigger at
+
+
+ The that will cause this evaluator to trigger
+
+
+
+ This evaluator will trigger if the level of the event
+ passed to
+ is equal to or greater than the
+ level.
+
+
+
+
+
+ Mapping between string name and Level object
+
+
+
+ Mapping between string name and object.
+ This mapping is held separately for each .
+ The level name is case insensitive.
+
+
+ Nicko Cadell
+
+
+
+ Mapping from level name to Level object. The
+ level name is case insensitive
+
+
+
+
+ Construct the level map
+
+
+
+ Construct the level map.
+
+
+
+
+
+ Clear the internal maps of all levels
+
+
+
+ Clear the internal maps of all levels
+
+
+
+
+
+ Create a new Level and add it to the map
+
+ the string to display for the Level
+ the level value to give to the Level
+
+
+ Create a new Level and add it to the map
+
+
+
+
+
+
+ Create a new Level and add it to the map
+
+ the string to display for the Level
+ the level value to give to the Level
+ the display name to give to the Level
+
+
+ Create a new Level and add it to the map
+
+
+
+
+
+ Add a Level to the map
+
+ the Level to add
+
+
+ Add a Level to the map
+
+
+
+
+
+ Lookup a named level from the map
+
+ the name of the level to lookup is taken from this level.
+ If the level is not set on the map then this level is added
+ the level in the map with the name specified
+
+
+ Lookup a named level from the map. The name of the level to lookup is taken
+ from the property of the
+ argument.
+
+
+ If no level with the specified name is found then the
+ argument is added to the level map
+ and returned.
+
+
+
+
+
+ Lookup a by name
+
+ The name of the Level to lookup
+ a Level from the map with the name specified
+
+
+ Returns the from the
+ map with the name specified. If the no level is
+ found then null is returned.
+
+
+
+
+
+ Return all possible levels as a list of Level objects.
+
+ all possible levels as a list of Level objects
+
+
+ Return all possible levels as a list of Level objects.
+
+
+
+
+
+ The internal representation of caller location information.
+
+
+
+ This class uses the System.Diagnostics.StackTrace class to generate
+ a call stack. The caller's information is then extracted from this stack.
+
+
+ The System.Diagnostics.StackTrace class is not supported on the
+ .NET Compact Framework 1.0 therefore caller location information is not
+ available on that framework.
+
+
+ The System.Diagnostics.StackTrace class has this to say about Release builds:
+
+
+ "StackTrace information will be most informative with Debug build configurations.
+ By default, Debug builds include debug symbols, while Release builds do not. The
+ debug symbols contain most of the file, method name, line number, and column
+ information used in constructing StackFrame and StackTrace objects. StackTrace
+ might not report as many method calls as expected, due to code transformations
+ that occur during optimization."
+
+
+ This means that in a Release build the caller information may be incomplete or may
+ not exist at all! Therefore caller location information cannot be relied upon in a Release build.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ When location information is not available the constant
+ NA is returned. Current value of this string
+ constant is ?.
+
+
+
+
+ Constructor
+
+ The declaring type of the method that is
+ the stack boundary into the logging system for this call.
+
+
+ Initializes a new instance of the
+ class based on the current thread.
+
+
+
+
+
+ Constructor
+
+ The fully qualified class name.
+ The method name.
+ The file name.
+ The line number of the method within the file.
+
+
+ Initializes a new instance of the
+ class with the specified data.
+
+
+
+
+
+ The fully qualified type of the LocationInfo class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets the fully qualified class name of the caller making the logging
+ request.
+
+
+ The fully qualified class name of the caller making the logging
+ request.
+
+
+
+ Gets the fully qualified class name of the caller making the logging
+ request.
+
+
+
+
+
+ Gets the file name of the caller.
+
+
+ The file name of the caller.
+
+
+
+ Gets the file name of the caller.
+
+
+
+
+
+ Gets the line number of the caller.
+
+
+ The line number of the caller.
+
+
+
+ Gets the line number of the caller.
+
+
+
+
+
+ Gets the method name of the caller.
+
+
+ The method name of the caller.
+
+
+
+ Gets the method name of the caller.
+
+
+
+
+
+ Gets all available caller information
+
+
+ All available caller information, in the format
+ fully.qualified.classname.of.caller.methodName(Filename:line)
+
+
+
+ Gets all available caller information, in the format
+ fully.qualified.classname.of.caller.methodName(Filename:line)
+
+
+
+
+
+ Gets the stack frames from the stack trace of the caller making the log request
+
+
+
+
+ Static manager that controls the creation of repositories
+
+
+
+ Static manager that controls the creation of repositories
+
+
+ This class is used by the wrapper managers (e.g. )
+ to provide access to the objects.
+
+
+ This manager also holds the that is used to
+ lookup and create repositories. The selector can be set either programmatically using
+ the property, or by setting the log4net.RepositorySelector
+ AppSetting in the applications config file to the fully qualified type name of the
+ selector to use.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Private constructor to prevent instances. Only static methods should be used.
+
+
+
+ Private constructor to prevent instances. Only static methods should be used.
+
+
+
+
+
+ Hook the shutdown event
+
+
+
+ On the full .NET runtime, the static constructor hooks up the
+ AppDomain.ProcessExit and AppDomain.DomainUnload> events.
+ These are used to shutdown the log4net system as the application exits.
+
+
+
+
+
+ Register for ProcessExit and DomainUnload events on the AppDomain
+
+
+
+ This needs to be in a separate method because the events make
+ a LinkDemand for the ControlAppDomain SecurityPermission. Because
+ this is a LinkDemand it is demanded at JIT time. Therefore we cannot
+ catch the exception in the method itself, we have to catch it in the
+ caller.
+
+
+
+
+
+ Return the default instance.
+
+ the repository to lookup in
+ Return the default instance
+
+
+ Gets the for the repository specified
+ by the argument.
+
+
+
+
+
+ Returns the default instance.
+
+ The assembly to use to lookup the repository.
+ The default instance.
+
+
+
+ Return the default instance.
+
+ the repository to lookup in
+ Return the default instance
+
+
+ Gets the for the repository specified
+ by the argument.
+
+
+
+
+
+ Returns the default instance.
+
+ The assembly to use to lookup the repository.
+ The default instance.
+
+
+ Returns the default instance.
+
+
+
+
+
+ Returns the named logger if it exists.
+
+ The repository to lookup in.
+ The fully qualified logger name to look for.
+
+ The logger found, or null if the named logger does not exist in the
+ specified repository.
+
+
+
+ If the named logger exists (in the specified repository) then it
+ returns a reference to the logger, otherwise it returns
+ null.
+
+
+
+
+
+ Returns the named logger if it exists.
+
+ The assembly to use to lookup the repository.
+ The fully qualified logger name to look for.
+
+ The logger found, or null if the named logger does not exist in the
+ specified assembly's repository.
+
+
+
+ If the named logger exists (in the specified assembly's repository) then it
+ returns a reference to the logger, otherwise it returns
+ null.
+
+
+
+
+
+ Returns all the currently defined loggers in the specified repository.
+
+ The repository to lookup in.
+ All the defined loggers.
+
+
+ The root logger is not included in the returned array.
+
+
+
+
+
+ Returns all the currently defined loggers in the specified assembly's repository.
+
+ The assembly to use to lookup the repository.
+ All the defined loggers.
+
+
+ The root logger is not included in the returned array.
+
+
+
+
+
+ Retrieves or creates a named logger.
+
+ The repository to lookup in.
+ The name of the logger to retrieve.
+ The logger with the name specified.
+
+
+ Retrieves a logger named as the
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+
+
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+
+
+
+
+
+ Retrieves or creates a named logger.
+
+ The assembly to use to lookup the repository.
+ The name of the logger to retrieve.
+ The logger with the name specified.
+
+
+ Retrieves a logger named as the
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+
+
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+
+
+
+
+
+ Shorthand for .
+
+ The repository to lookup in.
+ The of which the fullname will be used as the name of the logger to retrieve.
+ The logger with the name specified.
+
+
+ Gets the logger for the fully qualified name of the type specified.
+
+
+
+
+
+ Shorthand for .
+
+ the assembly to use to lookup the repository
+ The of which the fullname will be used as the name of the logger to retrieve.
+ The logger with the name specified.
+
+
+ Gets the logger for the fully qualified name of the type specified.
+
+
+
+
+
+ Shuts down the log4net system.
+
+
+
+ Calling this method will safely close and remove all
+ appenders in all the loggers including root contained in all the
+ default repositories.
+
+
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+
+
+ The shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+
+
+
+ Shuts down the repository for the repository specified.
+
+ The repository to shutdown.
+
+
+ Calling this method will safely close and remove all
+ appenders in all the loggers including root contained in the
+ repository for the specified.
+
+
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+
+
+ The shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+
+
+
+ Shuts down the repository for the repository specified.
+
+ The assembly to use to lookup the repository.
+
+
+ Calling this method will safely close and remove all
+ appenders in all the loggers including root contained in the
+ repository for the repository. The repository is looked up using
+ the specified.
+
+
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+
+
+ The shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+
+
+
+ Resets all values contained in this repository instance to their defaults.
+
+ The repository to reset.
+
+
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to null,
+ sets their additivity flag to true and sets the level
+ of the root logger to . Moreover,
+ message disabling is set its default "off" value.
+
+
+
+
+
+ Resets all values contained in this repository instance to their defaults.
+
+ The assembly to use to lookup the repository to reset.
+
+
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to null,
+ sets their additivity flag to true and sets the level
+ of the root logger to . Moreover,
+ message disabling is set its default "off" value.
+
+
+
+
+
+ Creates a repository with the specified name.
+
+ The name of the repository, this must be unique amongst repositories.
+ The created for the repository.
+
+
+ CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.
+
+
+ Creates the default type of which is a
+ object.
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An will be thrown if the repository already exists.
+
+
+ The specified repository already exists.
+
+
+
+ Creates a repository with the specified name.
+
+ The name of the repository, this must be unique amongst repositories.
+ The created for the repository.
+
+
+ Creates the default type of which is a
+ object.
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An will be thrown if the repository already exists.
+
+
+ The specified repository already exists.
+
+
+
+ Creates a repository with the specified name and repository type.
+
+ The name of the repository, this must be unique to the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+ CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An Exception will be thrown if the repository already exists.
+
+
+ The specified repository already exists.
+
+
+
+ Creates a repository with the specified name and repository type.
+
+ The name of the repository, this must be unique to the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An Exception will be thrown if the repository already exists.
+
+
+ The specified repository already exists.
+
+
+
+ Creates a repository for the specified assembly and repository type.
+
+ The assembly to use to get the name of the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+ CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same assembly specified will return the same repository instance.
+
+
+
+
+
+ Creates a repository for the specified assembly and repository type.
+
+ The assembly to use to get the name of the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same assembly specified will return the same repository instance.
+
+
+
+
+
+ Gets an array of all currently defined repositories.
+
+ An array of all the known objects.
+
+
+ Gets an array of all currently defined repositories.
+
+
+
+
+
+ Internal method to get pertinent version info.
+
+ A string of version info.
+
+
+
+ Called when the event fires
+
+ the that is exiting
+ null
+
+
+ Called when the event fires.
+
+
+ When the event is triggered the log4net system is .
+
+
+
+
+
+ Called when the event fires
+
+ the that is exiting
+ null
+
+
+ Called when the event fires.
+
+
+ When the event is triggered the log4net system is .
+
+
+
+
+
+ The fully qualified type of the LoggerManager class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Initialize the default repository selector
+
+
+
+
+ Gets or sets the repository selector used by the .
+
+
+ The repository selector used by the .
+
+
+
+ The repository selector () is used by
+ the to create and select repositories
+ ().
+
+
+ The caller to supplies either a string name
+ or an assembly (if not supplied the assembly is inferred using
+ ).
+
+
+ This context is used by the selector to lookup a specific repository.
+
+
+ For the full .NET Framework, the default repository is DefaultRepositorySelector;
+ for the .NET Compact Framework CompactRepositorySelector is the default
+ repository.
+
+
+
+
+
+ Implementation of the interface.
+
+
+
+ This class should be used as the base for all wrapper implementations.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructs a new wrapper for the specified logger.
+
+ The logger to wrap.
+
+
+ Constructs a new wrapper for the specified logger.
+
+
+
+
+
+ The logger that this object is wrapping
+
+
+
+
+ Gets the implementation behind this wrapper object.
+
+
+ The object that this object is implementing.
+
+
+
+ The Logger object may not be the same object as this object
+ because of logger decorators.
+
+
+ This gets the actual underlying objects that is used to process
+ the log events.
+
+
+
+
+
+ Portable data structure used by
+
+
+
+ Portable data structure used by
+
+
+ Nicko Cadell
+
+
+
+ The logger name.
+
+
+
+ The logger name.
+
+
+
+
+
+ Level of logging event.
+
+
+
+ Level of logging event. Level cannot be Serializable
+ because it is a flyweight. Due to its special serialization it
+ cannot be declared final either.
+
+
+
+
+
+ The application supplied message.
+
+
+
+ The application supplied message of logging event.
+
+
+
+
+
+ The name of thread
+
+
+
+ The name of thread in which this logging event was generated
+
+
+
+
+
+ Gets or sets the local time the event was logged
+
+
+
+ Prefer using the setter, since local time can be ambiguous.
+
+
+
+
+
+ Location information for the caller.
+
+
+
+ Location information for the caller.
+
+
+
+
+
+ String representation of the user
+
+
+
+ String representation of the user's windows name,
+ like DOMAIN\username
+
+
+
+
+
+ String representation of the identity.
+
+
+
+ String representation of the current thread's principal identity.
+
+
+
+
+
+ The string representation of the exception
+
+
+
+ The string representation of the exception
+
+
+
+
+
+ String representation of the AppDomain.
+
+
+
+ String representation of the AppDomain.
+
+
+
+
+
+ Additional event specific properties
+
+
+
+ A logger or an appender may attach additional
+ properties to specific events. These properties
+ have a string key and an object value.
+
+
+
+
+
+ Gets or sets the UTC time the event was logged
+
+
+
+ The TimeStamp is stored in the UTC time zone.
+
+
+
+
+
+ Flags passed to the property
+
+
+
+ Flags passed to the property
+
+
+ Nicko Cadell
+
+
+
+ Fix the MDC
+
+
+
+
+ Fix the NDC
+
+
+
+
+ Fix the rendered message
+
+
+
+
+ Fix the thread name
+
+
+
+
+ Fix the callers location information
+
+
+ CAUTION: Very slow to generate
+
+
+
+
+ Fix the callers windows user name
+
+
+ CAUTION: Slow to generate
+
+
+
+
+ Fix the domain friendly name
+
+
+
+
+ Fix the callers principal name
+
+
+ CAUTION: May be slow to generate
+
+
+
+
+ Fix the exception text
+
+
+
+
+ Fix the event properties. Active properties must implement in order to be eligible for fixing.
+
+
+
+
+ No fields fixed
+
+
+
+
+ All fields fixed
+
+
+
+
+ Partial fields fixed
+
+
+
+ This set of partial fields gives good performance. The following fields are fixed:
+
+
+
+
+
+
+
+
+
+
+
+
+ The internal representation of logging events.
+
+
+
+ When an affirmative decision is made to log then a
+ instance is created. This instance
+ is passed around to the different log4net components.
+
+
+ This class is of concern to those wishing to extend log4net.
+
+
+ Some of the values in instances of
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ . There is a performance penalty
+ for incurred by calling but it
+ is essential to maintaining data consistency.
+
+
+ Nicko Cadell
+ Gert Driesen
+ Douglas de la Torre
+ Daniel Cazzulino
+
+
+
+ The key into the Properties map for the host name value.
+
+
+
+
+ The key into the Properties map for the thread identity value.
+
+
+
+
+ The key into the Properties map for the user name value.
+
+
+
+
+ Initializes a new instance of the class
+ from the supplied parameters.
+
+ The declaring type of the method that is
+ the stack boundary into the logging system for this call.
+ The repository this event is logged in.
+ The name of the logger of this event.
+ The level of this event.
+ The message of this event.
+ The exception for this event.
+
+
+ Except , and ,
+ all fields of LoggingEvent are filled when actually needed. Call
+ to cache all data locally
+ to prevent inconsistencies.
+
+ This method is called by the log4net framework
+ to create a logging event.
+
+
+
+
+
+ Initializes a new instance of the class
+ using specific data.
+
+ The declaring type of the method that is
+ the stack boundary into the logging system for this call.
+ The repository this event is logged in.
+ Data used to initialize the logging event.
+ The fields in the struct that have already been fixed.
+
+
+ This constructor is provided to allow a
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+
+
+ Use the method to obtain an
+ instance of the class.
+
+
+ The parameter should be used to specify which fields in the
+ struct have been preset. Fields not specified in the
+ will be captured from the environment if requested or fixed.
+
+
+
+
+
+ Initializes a new instance of the class
+ using specific data.
+
+ The declaring type of the method that is
+ the stack boundary into the logging system for this call.
+ The repository this event is logged in.
+ Data used to initialize the logging event.
+
+
+ This constructor is provided to allow a
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+
+
+ Use the method to obtain an
+ instance of the class.
+
+
+ This constructor sets this objects flags to ,
+ this assumes that all the data relating to this event is passed in via the
+ parameter and no other data should be captured from the environment.
+
+
+
+
+
+ Initializes a new instance of the class
+ using specific data.
+
+ Data used to initialize the logging event.
+
+
+ This constructor is provided to allow a
+ to be created independently of the log4net framework. This can
+ be useful if you require a custom serialization scheme.
+
+
+ Use the method to obtain an
+ instance of the class.
+
+
+ This constructor sets this objects flags to ,
+ this assumes that all the data relating to this event is passed in via the
+ parameter and no other data should be captured from the environment.
+
+
+
+
+
+ Serialization constructor
+
+ The that holds the serialized object data.
+ The that contains contextual information about the source or destination.
+
+
+ Initializes a new instance of the class
+ with serialized data.
+
+
+
+
+
+ Ensure that the repository is set.
+
+ the value for the repository
+
+
+
+ Write the rendered message to a TextWriter
+
+ the writer to write the message to
+
+
+ Unlike the property this method
+ does store the message data in the internal cache. Therefore
+ if called only once this method should be faster than the
+ property, however if the message is
+ to be accessed multiple times then the property will be more efficient.
+
+
+
+
+
+ Serializes this object into the provided.
+
+ The to populate with data.
+ The destination for this serialization.
+
+
+ The data in this event must be fixed before it can be serialized.
+
+
+ The method must be called during the
+ method call if this event
+ is to be used outside that method.
+
+
+
+
+
+ Gets the portable data for this .
+
+ The for this event.
+
+
+ A new can be constructed using a
+ instance.
+
+
+ Does a fix of the data
+ in the logging event before returning the event data.
+
+
+
+
+
+ Gets the portable data for this .
+
+ The set of data to ensure is fixed in the LoggingEventData
+ The for this event.
+
+
+ A new can be constructed using a
+ instance.
+
+
+
+
+
+ Returns this event's exception's rendered using the
+ .
+
+
+ This event's exception's rendered using the .
+
+
+
+ Obsolete. Use instead.
+
+
+
+
+
+ Returns this event's exception's rendered using the
+ .
+
+
+ This event's exception's rendered using the .
+
+
+
+ Returns this event's exception's rendered using the
+ .
+
+
+
+
+
+ Fix instance fields that hold volatile data.
+
+
+
+ Some of the values in instances of
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ . There is a performance penalty
+ incurred by calling but it
+ is essential to maintaining data consistency.
+
+
+ Calling is equivalent to
+ calling passing the parameter
+ false.
+
+
+ See for more
+ information.
+
+
+
+
+
+ Fixes instance fields that hold volatile data.
+
+ Set to true to not fix data that takes a long time to fix.
+
+
+ Some of the values in instances of
+ are considered volatile, that is the values are correct at the
+ time the event is delivered to appenders, but will not be consistent
+ at any time afterwards. If an event is to be stored and then processed
+ at a later time these volatile values must be fixed by calling
+ . There is a performance penalty
+ for incurred by calling but it
+ is essential to maintaining data consistency.
+
+
+ The param controls the data that
+ is fixed. Some of the data that can be fixed takes a long time to
+ generate, therefore if you do not require those settings to be fixed
+ they can be ignored by setting the param
+ to true. This setting will ignore the
+ and settings.
+
+
+ Set to false to ensure that all
+ settings are fixed.
+
+
+
+
+
+ Fix the fields specified by the parameter
+
+ the fields to fix
+
+
+ Only fields specified in the will be fixed.
+ Fields will not be fixed if they have previously been fixed.
+ It is not possible to 'unfix' a field.
+
+
+
+
+
+ Lookup a composite property in this event
+
+ the key for the property to lookup
+ the value for the property
+
+
+ This event has composite properties that combine together properties from
+ several different contexts in the following order:
+
+
+ this events properties
+
+ This event has that can be set. These
+ properties are specific to this event only.
+
+
+
+ the thread properties
+
+ The that are set on the current
+ thread. These properties are shared by all events logged on this thread.
+
+
+
+ the global properties
+
+ The that are set globally. These
+ properties are shared by all the threads in the AppDomain.
+
+
+
+
+
+
+
+
+ Get all the composite properties in this event
+
+ the containing all the properties
+
+
+ See for details of the composite properties
+ stored by the event.
+
+
+ This method returns a single containing all the
+ properties defined for this event.
+
+
+
+
+
+ The internal logging event data.
+
+
+
+
+ The internal logging event data.
+
+
+
+
+ The internal logging event data.
+
+
+
+
+ The fully qualified Type of the calling
+ logger class in the stack frame (i.e. the declaring type of the method).
+
+
+
+
+ The application supplied message of logging event.
+
+
+
+
+ The exception that was thrown.
+
+
+ This is not serialized. The string representation
+ is serialized instead.
+
+
+
+
+ The repository that generated the logging event
+
+
+ This is not serialized.
+
+
+
+
+ The fix state for this event
+
+
+ These flags indicate which fields have been fixed.
+ Not serialized.
+
+
+
+
+ Indicated that the internal cache is updateable (ie not fixed)
+
+
+ This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler
+ changes in the caching strategy.
+
+
+
+
+ Gets the time when the current process started.
+
+
+ This is the time when this process started.
+
+
+
+ The TimeStamp is stored internally in UTC and converted to the local time zone for this computer.
+
+
+ Tries to get the start time for the current process.
+ Failing that it returns the time of the first call to
+ this property.
+
+
+ Note that AppDomains may be loaded and unloaded within the
+ same process without the process terminating and therefore
+ without the process start time being reset.
+
+
+
+
+
+ Gets the UTC time when the current process started.
+
+
+ This is the UTC time when this process started.
+
+
+
+ Tries to get the start time for the current process.
+ Failing that it returns the time of the first call to
+ this property.
+
+
+ Note that AppDomains may be loaded and unloaded within the
+ same process without the process terminating and therefore
+ without the process start time being reset.
+
+
+
+
+
+ Gets the of the logging event.
+
+
+ The of the logging event.
+
+
+
+ Gets the of the logging event.
+
+
+
+
+
+ Gets the time of the logging event.
+
+
+ The time of the logging event.
+
+
+
+ The TimeStamp is stored in UTC and converted to the local time zone for this computer.
+
+
+
+
+
+ Gets UTC the time of the logging event.
+
+
+ The UTC time of the logging event.
+
+
+
+
+ Gets the name of the logger that logged the event.
+
+
+ The name of the logger that logged the event.
+
+
+
+ Gets the name of the logger that logged the event.
+
+
+
+
+
+ Gets the location information for this logging event.
+
+
+ The location information for this logging event.
+
+
+
+ The collected information is cached for future use.
+
+
+ See the class for more information on
+ supported frameworks and the different behavior in Debug and
+ Release builds.
+
+
+
+
+
+ Gets the message object used to initialize this event.
+
+
+ The message object used to initialize this event.
+
+
+
+ Gets the message object used to initialize this event.
+ Note that this event may not have a valid message object.
+ If the event is serialized the message object will not
+ be transferred. To get the text of the message the
+ property must be used
+ not this property.
+
+
+ If there is no defined message object for this event then
+ null will be returned.
+
+
+
+
+
+ Gets the exception object used to initialize this event.
+
+
+ The exception object used to initialize this event.
+
+
+
+ Gets the exception object used to initialize this event.
+ Note that this event may not have a valid exception object.
+ If the event is serialized the exception object will not
+ be transferred. To get the text of the exception the
+ method must be used
+ not this property.
+
+
+ If there is no defined exception object for this event then
+ null will be returned.
+
+
+
+
+
+ The that this event was created in.
+
+
+
+ The that this event was created in.
+
+
+
+
+
+ Gets the message, rendered through the .
+
+
+ The message rendered through the .
+
+
+
+ The collected information is cached for future use.
+
+
+
+
+
+ Gets the name of the current thread.
+
+
+ The name of the current thread, or the thread ID when
+ the name is not available.
+
+
+
+ The collected information is cached for future use.
+
+
+
+
+
+ Gets the name of the current user.
+
+
+ The name of the current user, or NOT AVAILABLE when the
+ underlying runtime has no support for retrieving the name of the
+ current user.
+
+
+
+ Calls WindowsIdentity.GetCurrent().Name to get the name of
+ the current windows user.
+
+
+ To improve performance, we could cache the string representation of
+ the name, and reuse that as long as the identity stayed constant.
+ Once the identity changed, we would need to re-assign and re-render
+ the string.
+
+
+ However, the WindowsIdentity.GetCurrent() call seems to
+ return different objects every time, so the current implementation
+ doesn't do this type of caching.
+
+
+ Timing for these operations:
+
+
+
+ Method
+ Results
+
+
+ WindowsIdentity.GetCurrent()
+ 10000 loops, 00:00:00.2031250 seconds
+
+
+ WindowsIdentity.GetCurrent().Name
+ 10000 loops, 00:00:08.0468750 seconds
+
+
+
+ This means we could speed things up almost 40 times by caching the
+ value of the WindowsIdentity.GetCurrent().Name property, since
+ this takes (8.04-0.20) = 7.84375 seconds.
+
+
+
+
+
+ Gets the identity of the current thread principal.
+
+
+ The string name of the identity of the current thread principal.
+
+
+
+ Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get
+ the name of the current thread principal.
+
+
+
+
+
+ Gets the AppDomain friendly name.
+
+
+ The AppDomain friendly name.
+
+
+
+ Gets the AppDomain friendly name.
+
+
+
+
+
+ Additional event specific properties.
+
+
+ Additional event specific properties.
+
+
+
+ A logger or an appender may attach additional
+ properties to specific events. These properties
+ have a string key and an object value.
+
+
+ This property is for events that have been added directly to
+ this event. The aggregate properties (which include these
+ event properties) can be retrieved using
+ and .
+
+
+ Once the properties have been fixed this property
+ returns the combined cached properties. This ensures that updates to
+ this property are always reflected in the underlying storage. When
+ returning the combined properties there may be more keys in the
+ Dictionary than expected.
+
+
+
+
+
+ The fixed fields in this event
+
+
+ The set of fields that are fixed in this event
+
+
+
+ Fields will not be fixed if they have previously been fixed.
+ It is not possible to 'unfix' a field.
+
+
+
+
+
+ Implementation of wrapper interface.
+
+
+
+ This implementation of the interface
+ forwards to the held by the base class.
+
+
+ This logger has methods to allow the caller to log at the following
+ levels:
+
+
+
+ DEBUG
+
+ The and methods log messages
+ at the DEBUG level. That is the level with that name defined in the
+ repositories . The default value
+ for this level is . The
+ property tests if this level is enabled for logging.
+
+
+
+ INFO
+
+ The and methods log messages
+ at the INFO level. That is the level with that name defined in the
+ repositories . The default value
+ for this level is . The
+ property tests if this level is enabled for logging.
+
+
+
+ WARN
+
+ The and methods log messages
+ at the WARN level. That is the level with that name defined in the
+ repositories . The default value
+ for this level is . The
+ property tests if this level is enabled for logging.
+
+
+
+ ERROR
+
+ The and methods log messages
+ at the ERROR level. That is the level with that name defined in the
+ repositories . The default value
+ for this level is . The
+ property tests if this level is enabled for logging.
+
+
+
+ FATAL
+
+ The and methods log messages
+ at the FATAL level. That is the level with that name defined in the
+ repositories . The default value
+ for this level is . The
+ property tests if this level is enabled for logging.
+
+
+
+
+ The values for these levels and their semantic meanings can be changed by
+ configuring the for the repository.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ The ILog interface is use by application to log messages into
+ the log4net framework.
+
+
+
+ Use the to obtain logger instances
+ that implement this interface. The
+ static method is used to get logger instances.
+
+
+ This class contains methods for logging at different levels and also
+ has properties for determining if those logging levels are
+ enabled in the current configuration.
+
+
+ This interface can be implemented in different ways. This documentation
+ specifies reasonable behavior that a caller can expect from the actual
+ implementation, however different implementations reserve the right to
+ do things differently.
+
+
+ Simple example of logging messages
+
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.Info("Application Start");
+ log.Debug("This is a debug message");
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is another debug message");
+ }
+
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+ Log a message object with the level.
+
+ Log a message object with the level.
+
+ The message object to log.
+
+
+ This method first checks if this logger is DEBUG
+ enabled by comparing the level of this logger with the
+ level. If this logger is
+ DEBUG enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a formatted string with the level.
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+ Log a message object with the level.
+
+ Logs a message object with the level.
+
+
+
+ This method first checks if this logger is INFO
+ enabled by comparing the level of this logger with the
+ level. If this logger is
+ INFO enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+ The message object to log.
+
+
+
+
+
+ Logs a message object with the INFO level including
+ the stack trace of the passed
+ as a parameter.
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a formatted message string with the level.
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+ Log a message object with the level.
+
+ Log a message object with the level.
+
+
+
+ This method first checks if this logger is WARN
+ enabled by comparing the level of this logger with the
+ level. If this logger is
+ WARN enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+ The message object to log.
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a formatted message string with the level.
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+ Log a message object with the level.
+
+ Logs a message object with the level.
+
+ The message object to log.
+
+
+ This method first checks if this logger is ERROR
+ enabled by comparing the level of this logger with the
+ level. If this logger is
+ ERROR enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a formatted message string with the level.
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+ Log a message object with the level.
+
+ Log a message object with the level.
+
+
+
+ This method first checks if this logger is FATAL
+ enabled by comparing the level of this logger with the
+ level. If this logger is
+ FATAL enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+ The message object to log.
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a formatted message string with the level.
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Checks if this logger is enabled for the level.
+
+
+ true if this logger is enabled for events, false otherwise.
+
+
+
+ This function is intended to lessen the computational cost of
+ disabled log debug statements.
+
+ For some ILog interface log, when you write:
+
+ log.Debug("This is entry number: " + i );
+
+
+ You incur the cost constructing the message, string construction and concatenation in
+ this case, regardless of whether the message is logged or not.
+
+
+ If you are worried about speed (who isn't), then you should write:
+
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+
+
+ This way you will not incur the cost of parameter
+ construction if debugging is disabled for log. On
+ the other hand, if the log is debug enabled, you
+ will incur the cost of evaluating whether the logger is debug
+ enabled twice. Once in and once in
+ the . This is an insignificant overhead
+ since evaluating a logger takes about 1% of the time it
+ takes to actually log. This is the preferred style of logging.
+
+ Alternatively if your logger is available statically then the is debug
+ enabled state can be stored in a static variable like this:
+
+
+ private static readonly bool isDebugEnabled = log.IsDebugEnabled;
+
+
+ Then when you come to log you can write:
+
+
+ if (isDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+
+
+ This way the debug enabled state is only queried once
+ when the class is loaded. Using a private static readonly
+ variable is the most efficient because it is a run time constant
+ and can be heavily optimized by the JIT compiler.
+
+
+ Of course if you use a static readonly variable to
+ hold the enabled state of the logger then you cannot
+ change the enabled state at runtime to vary the logging
+ that is produced. You have to decide if you need absolute
+ speed or runtime flexibility.
+
+
+
+
+
+
+
+ Checks if this logger is enabled for the level.
+
+
+ true if this logger is enabled for events, false otherwise.
+
+
+ For more information see .
+
+
+
+
+
+
+
+ Checks if this logger is enabled for the level.
+
+
+ true if this logger is enabled for events, false otherwise.
+
+
+ For more information see .
+
+
+
+
+
+
+
+ Checks if this logger is enabled for the level.
+
+
+ true if this logger is enabled for events, false otherwise.
+
+
+ For more information see .
+
+
+
+
+
+
+
+ Checks if this logger is enabled for the level.
+
+
+ true if this logger is enabled for events, false otherwise.
+
+
+ For more information see .
+
+
+
+
+
+
+
+ Construct a new wrapper for the specified logger.
+
+ The logger to wrap.
+
+
+ Construct a new wrapper for the specified logger.
+
+
+
+
+
+ Virtual method called when the configuration of the repository changes
+
+ the repository holding the levels
+
+
+ Virtual method called when the configuration of the repository changes
+
+
+
+
+
+ Logs a message object with the DEBUG level.
+
+ The message object to log.
+
+
+ This method first checks if this logger is DEBUG
+ enabled by comparing the level of this logger with the
+ DEBUG level. If this logger is
+ DEBUG enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+ Logs a message object with the DEBUG level
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Logs a message object with the DEBUG level including
+ the stack trace of the passed
+ as a parameter.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Logs a formatted message string with the DEBUG level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the DEBUG level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the DEBUG level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the DEBUG level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the DEBUG level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a message object with the INFO level.
+
+ The message object to log.
+
+
+ This method first checks if this logger is INFO
+ enabled by comparing the level of this logger with the
+ INFO level. If this logger is
+ INFO enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+ Logs a message object with the INFO level.
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Logs a message object with the INFO level including
+ the stack trace of the
+ passed as a parameter.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Logs a formatted message string with the INFO level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the INFO level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the INFO level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the INFO level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the INFO level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a message object with the WARN level.
+
+ the message object to log
+
+
+ This method first checks if this logger is WARN
+ enabled by comparing the level of this logger with the
+ WARN level. If this logger is
+ WARN enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger and
+ also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+
+ WARNING Note that passing an to this
+ method will print the name of the but no
+ stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+ Logs a message object with the WARN level
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Logs a message object with the WARN level including
+ the stack trace of the
+ passed as a parameter.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Logs a formatted message string with the WARN level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the WARN level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the WARN level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the WARN level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the WARN level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a message object with the ERROR level.
+
+ The message object to log.
+
+
+ This method first checks if this logger is ERROR
+ enabled by comparing the level of this logger with the
+ ERROR level. If this logger is
+ ERROR enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger and
+ also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+
+ WARNING Note that passing an to this
+ method will print the name of the but no
+ stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+ Logs a message object with the ERROR level
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Logs a message object with the ERROR level including
+ the stack trace of the
+ passed as a parameter.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Logs a formatted message string with the ERROR level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the ERROR level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the ERROR level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the ERROR level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the ERROR level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a message object with the FATAL level.
+
+ The message object to log.
+
+
+ This method first checks if this logger is FATAL
+ enabled by comparing the level of this logger with the
+ FATAL level. If this logger is
+ FATAL enabled, then it converts the message object
+ (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger and
+ also higher in the hierarchy depending on the value of the
+ additivity flag.
+
+
+ WARNING Note that passing an to this
+ method will print the name of the but no
+ stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+ Logs a message object with the FATAL level
+
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Logs a message object with the FATAL level including
+ the stack trace of the
+ passed as a parameter.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Logs a formatted message string with the FATAL level.
+
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the FATAL level.
+
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the FATAL level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the FATAL level.
+
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ The string is formatted using the
+ format provider. To specify a localized provider use the
+ method.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Logs a formatted message string with the FATAL level.
+
+ An that supplies culture-specific formatting information
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the method. See
+ String.Format for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+ Event handler for the event
+
+ the repository
+ Empty
+
+
+
+ The fully qualified name of this declaring type not the type of any subclass.
+
+
+
+
+ Checks if this logger is enabled for the DEBUG
+ level.
+
+
+ true if this logger is enabled for DEBUG events,
+ false otherwise.
+
+
+
+ This function is intended to lessen the computational cost of
+ disabled log debug statements.
+
+
+ For some log Logger object, when you write:
+
+
+ log.Debug("This is entry number: " + i );
+
+
+ You incur the cost constructing the message, concatenation in
+ this case, regardless of whether the message is logged or not.
+
+
+ If you are worried about speed, then you should write:
+
+
+ if (log.IsDebugEnabled())
+ {
+ log.Debug("This is entry number: " + i );
+ }
+
+
+ This way you will not incur the cost of parameter
+ construction if debugging is disabled for log. On
+ the other hand, if the log is debug enabled, you
+ will incur the cost of evaluating whether the logger is debug
+ enabled twice. Once in IsDebugEnabled and once in
+ the Debug. This is an insignificant overhead
+ since evaluating a logger takes about 1% of the time it
+ takes to actually log.
+
+
+
+
+
+ Checks if this logger is enabled for the INFO level.
+
+
+ true if this logger is enabled for INFO events,
+ false otherwise.
+
+
+
+ See for more information and examples
+ of using this method.
+
+
+
+
+
+
+ Checks if this logger is enabled for the WARN level.
+
+
+ true if this logger is enabled for WARN events,
+ false otherwise.
+
+
+
+ See for more information and examples
+ of using this method.
+
+
+
+
+
+
+ Checks if this logger is enabled for the ERROR level.
+
+
+ true if this logger is enabled for ERROR events,
+ false otherwise.
+
+
+
+ See for more information and examples of using this method.
+
+
+
+
+
+
+ Checks if this logger is enabled for the FATAL level.
+
+
+ true if this logger is enabled for FATAL events,
+ false otherwise.
+
+
+
+ See for more information and examples of using this method.
+
+
+
+
+
+
+ provides method information without actually referencing a System.Reflection.MethodBase
+ as that would require that the containing assembly is loaded.
+
+
+
+
+
+ When location information is not available the constant
+ NA is returned. Current value of this string
+ constant is ?.
+
+
+
+
+ constructs a method item for an unknown method.
+
+
+
+
+ constructs a method item from the name of the method.
+
+
+
+
+
+ constructs a method item from the name of the method and its parameters.
+
+
+
+
+
+
+ constructs a method item from a method base by determining the method name and its parameters.
+
+
+
+
+
+ The fully qualified type of the StackFrameItem class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets the method name of the caller making the logging
+ request.
+
+
+ The method name of the caller making the logging
+ request.
+
+
+
+ Gets the method name of the caller making the logging
+ request.
+
+
+
+
+
+ Gets the method parameters of the caller making
+ the logging request.
+
+
+ The method parameters of the caller making
+ the logging request
+
+
+
+ Gets the method parameters of the caller making
+ the logging request.
+
+
+
+
+
+ A SecurityContext used by log4net when interacting with protected resources
+
+
+
+ A SecurityContext used by log4net when interacting with protected resources
+ for example with operating system services. This can be used to impersonate
+ a principal that has been granted privileges on the system resources.
+
+
+ Nicko Cadell
+
+
+
+ Impersonate this SecurityContext
+
+ State supplied by the caller
+ An instance that will
+ revoke the impersonation of this SecurityContext, or null
+
+
+ Impersonate this security context. Further calls on the current
+ thread should now be made in the security context provided
+ by this object. When the result
+ method is called the security
+ context of the thread should be reverted to the state it was in
+ before was called.
+
+
+
+
+
+ The providers default instances.
+
+
+
+ A configured component that interacts with potentially protected system
+ resources uses a to provide the elevated
+ privileges required. If the object has
+ been not been explicitly provided to the component then the component
+ will request one from this .
+
+
+ By default the is
+ an instance of which returns only
+ objects. This is a reasonable default
+ where the privileges required are not know by the system.
+
+
+ This default behavior can be overridden by subclassing the
+ and overriding the method to return
+ the desired objects. The default provider
+ can be replaced by programmatically setting the value of the
+ property.
+
+
+ An alternative is to use the log4net.Config.SecurityContextProviderAttribute
+ This attribute can be applied to an assembly in the same way as the
+ log4net.Config.XmlConfiguratorAttribute". The attribute takes
+ the type to use as the as an argument.
+
+
+ Nicko Cadell
+
+
+
+ The default provider
+
+
+
+
+ Protected default constructor to allow subclassing
+
+
+
+ Protected default constructor to allow subclassing
+
+
+
+
+
+ Create a SecurityContext for a consumer
+
+ The consumer requesting the SecurityContext
+ An impersonation context
+
+
+ The default implementation is to return a .
+
+
+ Subclasses should override this method to provide their own
+ behavior.
+
+
+
+
+
+ Gets or sets the default SecurityContextProvider
+
+
+ The default SecurityContextProvider
+
+
+
+ The default provider is used by configured components that
+ require a and have not had one
+ given to them.
+
+
+ By default this is an instance of
+ that returns objects.
+
+
+ The default provider can be set programmatically by setting
+ the value of this property to a sub class of
+ that has the desired behavior.
+
+
+
+
+
+ provides stack frame information without actually referencing a System.Diagnostics.StackFrame
+ as that would require that the containing assembly is loaded.
+
+
+
+
+
+ When location information is not available the constant
+ NA is returned. Current value of this string
+ constant is ?.
+
+
+
+
+ returns a stack frame item from a stack frame. This
+
+
+
+
+
+
+ The fully qualified type of the StackFrameItem class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets the fully qualified class name of the caller making the logging
+ request.
+
+
+ The fully qualified class name of the caller making the logging
+ request.
+
+
+
+ Gets the fully qualified class name of the caller making the logging
+ request.
+
+
+
+
+
+ Gets the file name of the caller.
+
+
+ The file name of the caller.
+
+
+
+ Gets the file name of the caller.
+
+
+
+
+
+ Gets the line number of the caller.
+
+
+ The line number of the caller.
+
+
+
+ Gets the line number of the caller.
+
+
+
+
+
+ Gets the method name of the caller.
+
+
+ The method name of the caller.
+
+
+
+ Gets the method name of the caller.
+
+
+
+
+
+ Gets all available caller information
+
+
+ All available caller information, in the format
+ fully.qualified.classname.of.caller.methodName(Filename:line)
+
+
+
+ Gets all available caller information, in the format
+ fully.qualified.classname.of.caller.methodName(Filename:line)
+
+
+
+
+
+ An evaluator that triggers after specified number of seconds.
+
+
+
+ This evaluator will trigger if the specified time period
+ has passed since last check.
+
+
+ Robert Sevcik
+
+
+
+ The default time threshold for triggering in seconds. Zero means it won't trigger at all.
+
+
+
+
+ The time threshold for triggering in seconds. Zero means it won't trigger at all.
+
+
+
+
+ The UTC time of last check. This gets updated when the object is created and when the evaluator triggers.
+
+
+
+
+ Create a new evaluator using the time threshold in seconds.
+
+
+
+ Create a new evaluator using the time threshold in seconds.
+
+
+ This evaluator will trigger if the specified time period
+ has passed since last check.
+
+
+
+
+
+ Create a new evaluator using the specified time threshold in seconds.
+
+
+ The time threshold in seconds to trigger after.
+ Zero means it won't trigger at all.
+
+
+
+ Create a new evaluator using the specified time threshold in seconds.
+
+
+ This evaluator will trigger if the specified time period
+ has passed since last check.
+
+
+
+
+
+ Is this the triggering event?
+
+ The event to check
+ This method returns true, if the specified time period
+ has passed since last check..
+ Otherwise it returns false
+
+
+ This evaluator will trigger if the specified time period
+ has passed since last check.
+
+
+
+
+
+ The time threshold in seconds to trigger after
+
+
+ The time threshold in seconds to trigger after.
+ Zero means it won't trigger at all.
+
+
+
+ This evaluator will trigger if the specified time period
+ has passed since last check.
+
+
+
+
+
+ Delegate used to handle creation of new wrappers.
+
+ The logger to wrap in a wrapper.
+
+
+ Delegate used to handle creation of new wrappers. This delegate
+ is called from the
+ method to construct the wrapper for the specified logger.
+
+
+ The delegate to use is supplied to the
+ constructor.
+
+
+
+
+
+ Maps between logger objects and wrapper objects.
+
+
+
+ This class maintains a mapping between objects and
+ objects. Use the method to
+ lookup the for the specified .
+
+
+ New wrapper instances are created by the
+ method. The default behavior is for this method to delegate construction
+ of the wrapper to the delegate supplied
+ to the constructor. This allows specialization of the behavior without
+ requiring subclassing of this type.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the
+
+ The handler to use to create the wrapper objects.
+
+
+ Initializes a new instance of the class with
+ the specified handler to create the wrapper objects.
+
+
+
+
+
+ Gets the wrapper object for the specified logger.
+
+ The wrapper object for the specified logger
+
+
+ If the logger is null then the corresponding wrapper is null.
+
+
+ Looks up the wrapper it it has previously been requested and
+ returns it. If the wrapper has never been requested before then
+ the virtual method is
+ called.
+
+
+
+
+
+ Creates the wrapper object for the specified logger.
+
+ The logger to wrap in a wrapper.
+ The wrapper object for the logger.
+
+
+ This implementation uses the
+ passed to the constructor to create the wrapper. This method
+ can be overridden in a subclass.
+
+
+
+
+
+ Called when a monitored repository shutdown event is received.
+
+ The that is shutting down
+
+
+ This method is called when a that this
+ is holding loggers for has signaled its shutdown
+ event . The default
+ behavior of this method is to release the references to the loggers
+ and their wrappers generated for this repository.
+
+
+
+
+
+ Event handler for repository shutdown event.
+
+ The sender of the event.
+ The event args.
+
+
+
+ Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings
+
+
+
+
+ The handler to use to create the extension wrapper objects.
+
+
+
+
+ Internal reference to the delegate used to register for repository shutdown events.
+
+
+
+
+ Gets the map of logger repositories.
+
+
+ Map of logger repositories.
+
+
+
+ Gets the hashtable that is keyed on . The
+ values are hashtables keyed on with the
+ value being the corresponding .
+
+
+
+
+
+ Formats a as "HH:mm:ss,fff".
+
+
+
+ Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459".
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Render a as a string.
+
+
+
+ Interface to abstract the rendering of a
+ instance into a string.
+
+
+ The method is used to render the
+ date to a text writer.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Formats the specified date as a string.
+
+ The date to format.
+ The writer to write to.
+
+
+ Format the as a string and write it
+ to the provided.
+
+
+
+
+
+ String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE.
+
+
+
+
+ String constant used to specify DateTimeDateFormat in layouts. Current value is DATE.
+
+
+
+
+ String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601.
+
+
+
+
+ Renders the date into a string. Format is "HH:mm:ss".
+
+ The date to render into a string.
+ The string builder to write to.
+
+
+ Subclasses should override this method to render the date
+ into a string using a precision up to the second. This method
+ will be called at most once per second and the result will be
+ reused if it is needed again during the same second.
+
+
+
+
+
+ Renders the date into a string. Format is "HH:mm:ss,fff".
+
+ The date to render into a string.
+ The writer to write to.
+
+
+ Uses the method to generate the
+ time string up to the seconds and then appends the current
+ milliseconds. The results from are
+ cached and is called at most once
+ per second.
+
+
+ Sub classes should override
+ rather than .
+
+
+
+
+
+ Last stored time with precision up to the second.
+
+
+
+
+ Last stored time with precision up to the second, formatted
+ as a string.
+
+
+
+
+ Last stored time with precision up to the second, formatted
+ as a string.
+
+
+
+
+ Formats a as "dd MMM yyyy HH:mm:ss,fff"
+
+
+
+ Formats a in the format
+ "dd MMM yyyy HH:mm:ss,fff" for example,
+ "06 Nov 1994 15:49:37,459".
+
+
+ Nicko Cadell
+ Gert Driesen
+ Angelika Schnagl
+
+
+
+ Default constructor.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Formats the date without the milliseconds part
+
+ The date to format.
+ The string builder to write to.
+
+
+ Formats a DateTime in the format "dd MMM yyyy HH:mm:ss"
+ for example, "06 Nov 1994 15:49:37".
+
+
+ The base class will append the ",fff" milliseconds section.
+ This method will only be called at most once per second.
+
+
+
+
+
+ The format info for the invariant culture.
+
+
+
+
+ Formats the as "yyyy-MM-dd HH:mm:ss,fff".
+
+
+
+ Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff".
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Default constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Formats the date without the milliseconds part
+
+ The date to format.
+ The string builder to write to.
+
+
+ Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss".
+
+
+ The base class will append the ",fff" milliseconds section.
+ This method will only be called at most once per second.
+
+
+
+
+
+ Formats the using the method.
+
+
+
+ Formats the using the method.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+ The format string.
+
+
+ Initializes a new instance of the class
+ with the specified format string.
+
+
+ The format string must be compatible with the options
+ that can be supplied to .
+
+
+
+
+
+ Formats the date using .
+
+ The date to convert to a string.
+ The writer to write to.
+
+
+ Uses the date format string supplied to the constructor to call
+ the method to format the date.
+
+
+
+
+
+ The format string used to format the .
+
+
+
+ The format string must be compatible with the options
+ that can be supplied to .
+
+
+
+
+
+ This filter drops all .
+
+
+
+ You can add this filter to the end of a filter chain to
+ switch from the default "accept all unless instructed otherwise"
+ filtering behavior to a "deny all unless instructed otherwise"
+ behavior.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Subclass this type to implement customized logging event filtering
+
+
+
+ Users should extend this class to implement customized logging
+ event filtering. Note that and
+ , the parent class of all standard
+ appenders, have built-in filtering rules. It is suggested that you
+ first use and understand the built-in rules before rushing to write
+ your own custom filters.
+
+
+ This abstract class assumes and also imposes that filters be
+ organized in a linear chain. The
+ method of each filter is called sequentially, in the order of their
+ addition to the chain.
+
+
+ The method must return one
+ of the integer constants ,
+ or .
+
+
+ If the value is returned, then the log event is dropped
+ immediately without consulting with the remaining filters.
+
+
+ If the value is returned, then the next filter
+ in the chain is consulted. If there are no more filters in the
+ chain, then the log event is logged. Thus, in the presence of no
+ filters, the default behavior is to log all logging events.
+
+
+ If the value is returned, then the log
+ event is logged without consulting the remaining filters.
+
+
+ The philosophy of log4net filters is largely inspired from the
+ Linux ipchains.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Implement this interface to provide customized logging event filtering
+
+
+
+ Users should implement this interface to implement customized logging
+ event filtering. Note that and
+ , the parent class of all standard
+ appenders, have built-in filtering rules. It is suggested that you
+ first use and understand the built-in rules before rushing to write
+ your own custom filters.
+
+
+ This abstract class assumes and also imposes that filters be
+ organized in a linear chain. The
+ method of each filter is called sequentially, in the order of their
+ addition to the chain.
+
+
+ The method must return one
+ of the integer constants ,
+ or .
+
+
+ If the value is returned, then the log event is dropped
+ immediately without consulting with the remaining filters.
+
+
+ If the value is returned, then the next filter
+ in the chain is consulted. If there are no more filters in the
+ chain, then the log event is logged. Thus, in the presence of no
+ filters, the default behavior is to log all logging events.
+
+
+ If the value is returned, then the log
+ event is logged without consulting the remaining filters.
+
+
+ The philosophy of log4net filters is largely inspired from the
+ Linux ipchains.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Decide if the logging event should be logged through an appender.
+
+ The LoggingEvent to decide upon
+ The decision of the filter
+
+
+ If the decision is , then the event will be
+ dropped. If the decision is , then the next
+ filter, if any, will be invoked. If the decision is then
+ the event will be logged without consulting with other filters in
+ the chain.
+
+
+
+
+
+ Property to get and set the next filter
+
+
+ The next filter in the chain
+
+
+
+ Filters are typically composed into chains. This property allows the next filter in
+ the chain to be accessed.
+
+
+
+
+
+ Points to the next filter in the filter chain.
+
+
+
+ See for more information.
+
+
+
+
+
+ Initialize the filter with the options set
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ Typically filter's options become active immediately on set,
+ however this method must still be called.
+
+
+
+
+
+ Decide if the should be logged through an appender.
+
+ The to decide upon
+ The decision of the filter
+
+
+ If the decision is , then the event will be
+ dropped. If the decision is , then the next
+ filter, if any, will be invoked. If the decision is then
+ the event will be logged without consulting with other filters in
+ the chain.
+
+
+ This method is marked abstract and must be implemented
+ in a subclass.
+
+
+
+
+
+ Property to get and set the next filter
+
+
+ The next filter in the chain
+
+
+
+ Filters are typically composed into chains. This property allows the next filter in
+ the chain to be accessed.
+
+
+
+
+
+ Default constructor
+
+
+
+
+ Always returns the integer constant
+
+ the LoggingEvent to filter
+ Always returns
+
+
+ Ignores the event being logged and just returns
+ . This can be used to change the default filter
+ chain behavior from to . This filter
+ should only be used as the last filter in the chain
+ as any further filters will be ignored!
+
+
+
+
+
+ The return result from
+
+
+
+ The return result from
+
+
+
+
+
+ The log event must be dropped immediately without
+ consulting with the remaining filters, if any, in the chain.
+
+
+
+
+ This filter is neutral with respect to the log event.
+ The remaining filters, if any, should be consulted for a final decision.
+
+
+
+
+ The log event must be logged immediately without
+ consulting with the remaining filters, if any, in the chain.
+
+
+
+
+ This is a very simple filter based on matching.
+
+
+
+ The filter admits two options and
+ . If there is an exact match between the value
+ of the option and the of the
+ , then the method returns in
+ case the option value is set
+ to true, if it is false then
+ is returned. If the does not match then
+ the result will be .
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ flag to indicate if the filter should on a match
+
+
+
+
+ the to match against
+
+
+
+
+ Default constructor
+
+
+
+
+ Tests if the of the logging event matches that of the filter
+
+ the event to filter
+ see remarks
+
+
+ If the of the event matches the level of the
+ filter then the result of the function depends on the
+ value of . If it is true then
+ the function will return , it it is false then it
+ will return . If the does not match then
+ the result will be .
+
+
+
+
+
+ when matching
+
+
+
+ The property is a flag that determines
+ the behavior when a matching is found. If the
+ flag is set to true then the filter will the
+ logging event, otherwise it will the event.
+
+
+ The default is true i.e. to the event.
+
+
+
+
+
+ The that the filter will match
+
+
+
+ The level that this filter will attempt to match against the
+ level. If a match is found then
+ the result depends on the value of .
+
+
+
+
+
+ This is a simple filter based on matching.
+
+
+
+ The filter admits three options and
+ that determine the range of priorities that are matched, and
+ . If there is a match between the range
+ of priorities and the of the , then the
+ method returns in case the
+ option value is set to true, if it is false
+ then is returned. If there is no match, is returned.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Flag to indicate the behavior when matching a
+
+
+
+
+ the minimum value to match
+
+
+
+
+ the maximum value to match
+
+
+
+
+ Default constructor
+
+
+
+
+ Check if the event should be logged.
+
+ the logging event to check
+ see remarks
+
+
+ If the of the logging event is outside the range
+ matched by this filter then
+ is returned. If the is matched then the value of
+ is checked. If it is true then
+ is returned, otherwise
+ is returned.
+
+
+
+
+
+ when matching and
+
+
+
+ The property is a flag that determines
+ the behavior when a matching is found. If the
+ flag is set to true then the filter will the
+ logging event, otherwise it will the event.
+
+
+ The default is true i.e. to the event.
+
+
+
+
+
+ Set the minimum matched
+
+
+
+ The minimum level that this filter will attempt to match against the
+ level. If a match is found then
+ the result depends on the value of .
+
+
+
+
+
+ Sets the maximum matched
+
+
+
+ The maximum level that this filter will attempt to match against the
+ level. If a match is found then
+ the result depends on the value of .
+
+
+
+
+
+ Simple filter to match a string in the event's logger name.
+
+
+
+ The works very similar to the . It admits two
+ options and . If the
+ of the starts
+ with the value of the option, then the
+ method returns in
+ case the option value is set to true,
+ if it is false then is returned.
+
+
+ Daniel Cazzulino
+
+
+
+ Flag to indicate the behavior when we have a match
+
+
+
+
+ The logger name string to substring match against the event
+
+
+
+
+ Default constructor
+
+
+
+
+ Check if this filter should allow the event to be logged
+
+ the event being logged
+ see remarks
+
+
+ The rendered message is matched against the .
+ If the equals the beginning of
+ the incoming ()
+ then a match will have occurred. If no match occurs
+ this function will return
+ allowing other filters to check the event. If a match occurs then
+ the value of is checked. If it is
+ true then is returned otherwise
+ is returned.
+
+
+
+
+
+ when matching
+
+
+
+ The property is a flag that determines
+ the behavior when a matching is found. If the
+ flag is set to true then the filter will the
+ logging event, otherwise it will the event.
+
+
+ The default is true i.e. to the event.
+
+
+
+
+
+ The that the filter will match
+
+
+
+ This filter will attempt to match this value against logger name in
+ the following way. The match will be done against the beginning of the
+ logger name (using ). The match is
+ case sensitive. If a match is found then
+ the result depends on the value of .
+
+
+
+
+
+ Simple filter to match a keyed string in the
+
+
+
+ Simple filter to match a keyed string in the
+
+
+ As the MDC has been replaced with layered properties the
+ should be used instead.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Simple filter to match a string an event property
+
+
+
+ Simple filter to match a string in the value for a
+ specific event property
+
+
+ Nicko Cadell
+
+
+
+ Simple filter to match a string in the rendered message
+
+
+
+ Simple filter to match a string in the rendered message
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Flag to indicate the behavior when we have a match
+
+
+
+
+ The string to substring match against the message
+
+
+
+
+ A string regex to match
+
+
+
+
+ A regex object to match (generated from m_stringRegexToMatch)
+
+
+
+
+ Default constructor
+
+
+
+
+ Initialize and precompile the Regex if required
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Check if this filter should allow the event to be logged
+
+ the event being logged
+ see remarks
+
+
+ The rendered message is matched against the .
+ If the occurs as a substring within
+ the message then a match will have occurred. If no match occurs
+ this function will return
+ allowing other filters to check the event. If a match occurs then
+ the value of is checked. If it is
+ true then is returned otherwise
+ is returned.
+
+
+
+
+
+ when matching or
+
+
+
+ The property is a flag that determines
+ the behavior when a matching is found. If the
+ flag is set to true then the filter will the
+ logging event, otherwise it will the event.
+
+
+ The default is true i.e. to the event.
+
+
+
+
+
+ Sets the static string to match
+
+
+
+ The string that will be substring matched against
+ the rendered message. If the message contains this
+ string then the filter will match. If a match is found then
+ the result depends on the value of .
+
+
+ One of or
+ must be specified.
+
+
+
+
+
+ Sets the regular expression to match
+
+
+
+ The regular expression pattern that will be matched against
+ the rendered message. If the message matches this
+ pattern then the filter will match. If a match is found then
+ the result depends on the value of .
+
+
+ One of or
+ must be specified.
+
+
+
+
+
+ The key to use to lookup the string from the event properties
+
+
+
+
+ Default constructor
+
+
+
+
+ Check if this filter should allow the event to be logged
+
+ the event being logged
+ see remarks
+
+
+ The event property for the is matched against
+ the .
+ If the occurs as a substring within
+ the property value then a match will have occurred. If no match occurs
+ this function will return
+ allowing other filters to check the event. If a match occurs then
+ the value of is checked. If it is
+ true then is returned otherwise
+ is returned.
+
+
+
+
+
+ The key to lookup in the event properties and then match against.
+
+
+
+ The key name to use to lookup in the properties map of the
+ . The match will be performed against
+ the value of this property if it exists.
+
+
+
+
+
+ Simple filter to match a string in the
+
+
+
+ Simple filter to match a string in the
+
+
+ As the MDC has been replaced with named stacks stored in the
+ properties collections the should
+ be used instead.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Default constructor
+
+
+
+ Sets the to "NDC".
+
+
+
+
+
+ Write the event appdomain name to the output
+
+
+
+ Writes the to the output writer.
+
+
+ Daniel Cazzulino
+ Nicko Cadell
+
+
+
+ Abstract class that provides the formatting functionality that
+ derived classes need.
+
+
+ Conversion specifiers in a conversion patterns are parsed to
+ individual PatternConverters. Each of which is responsible for
+ converting a logging event in a converter specific manner.
+
+ Nicko Cadell
+
+
+
+ Abstract class that provides the formatting functionality that
+ derived classes need.
+
+
+
+ Conversion specifiers in a conversion patterns are parsed to
+ individual PatternConverters. Each of which is responsible for
+ converting a logging event in a converter specific manner.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initial buffer size
+
+
+
+
+ Maximum buffer size before it is recycled
+
+
+
+
+ Protected constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Evaluate this pattern converter and write the output to a writer.
+
+ that will receive the formatted result.
+ The state object on which the pattern converter should be executed.
+
+
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the appropriate way.
+
+
+
+
+
+ Set the next pattern converter in the chains
+
+ the pattern converter that should follow this converter in the chain
+ the next converter
+
+
+ The PatternConverter can merge with its neighbor during this method (or a sub class).
+ Therefore the return value may or may not be the value of the argument passed in.
+
+
+
+
+
+ Write the pattern converter to the writer with appropriate formatting
+
+ that will receive the formatted result.
+ The state object on which the pattern converter should be executed.
+
+
+ This method calls to allow the subclass to perform
+ appropriate conversion of the pattern converter. If formatting options have
+ been specified via the then this method will
+ apply those formattings before writing the output.
+
+
+
+
+
+ Fast space padding method.
+
+ to which the spaces will be appended.
+ The number of spaces to be padded.
+
+
+ Fast space padding method.
+
+
+
+
+
+ The option string to the converter
+
+
+
+
+ Write an dictionary to a
+
+ the writer to write to
+ a to use for object conversion
+ the value to write to the writer
+
+
+ Writes the to a writer in the form:
+
+
+ {key1=value1, key2=value2, key3=value3}
+
+
+ If the specified
+ is not null then it is used to render the key and value to text, otherwise
+ the object's ToString method is called.
+
+
+
+
+
+ Write an dictionary to a
+
+ the writer to write to
+ a to use for object conversion
+ the value to write to the writer
+
+
+ Writes the to a writer in the form:
+
+
+ {key1=value1, key2=value2, key3=value3}
+
+
+ If the specified
+ is not null then it is used to render the key and value to text, otherwise
+ the object's ToString method is called.
+
+
+
+
+
+ Write an object to a
+
+ the writer to write to
+ a to use for object conversion
+ the value to write to the writer
+
+
+ Writes the Object to a writer. If the specified
+ is not null then it is used to render the object to text, otherwise
+ the object's ToString method is called.
+
+
+
+
+
+ Get the next pattern converter in the chain
+
+
+ the next pattern converter in the chain
+
+
+
+ Get the next pattern converter in the chain
+
+
+
+
+
+ Gets or sets the formatting info for this converter
+
+
+ The formatting info for this converter
+
+
+
+ Gets or sets the formatting info for this converter
+
+
+
+
+
+ Gets or sets the option value for this converter
+
+
+ The option for this converter
+
+
+
+ Gets or sets the option value for this converter
+
+
+
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the correct way.
+
+ that will receive the formatted result.
+ The on which the pattern converter should be executed.
+
+
+
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the correct way.
+
+ that will receive the formatted result.
+ The state object on which the pattern converter should be executed.
+
+
+
+ Flag indicating if this converter handles exceptions
+
+
+ false if this converter handles exceptions
+
+
+
+
+ Flag indicating if this converter handles the logging event exception
+
+ false if this converter handles the logging event exception
+
+
+ If this converter handles the exception object contained within
+ , then this property should be set to
+ false. Otherwise, if the layout ignores the exception
+ object, then the property should be set to true.
+
+
+ Set this value to override a this default setting. The default
+ value is true, this converter does not handle the exception.
+
+
+
+
+
+ Write the event appdomain name to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the to the output .
+
+
+
+
+
+ Converter for items in the ASP.Net Cache.
+
+
+
+ Outputs an item from the .
+
+
+ Ron Grabowski
+
+
+
+ Abstract class that provides access to the current HttpContext () that
+ derived classes need.
+
+
+ This class handles the case when HttpContext.Current is null by writing
+ to the writer.
+
+ Ron Grabowski
+
+
+
+ Derived pattern converters must override this method in order to
+ convert conversion specifiers in the correct way.
+
+ that will receive the formatted result.
+ The on which the pattern converter should be executed.
+ The under which the ASP.Net request is running.
+
+
+
+ Write the ASP.Net Cache item to the output
+
+ that will receive the formatted result.
+ The on which the pattern converter should be executed.
+ The under which the ASP.Net request is running.
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property. If no property has been set, all key value pairs from the Cache will
+ be written to the output.
+
+
+
+
+
+ Converter for items in the .
+
+
+
+ Outputs an item from the .
+
+
+ Ron Grabowski
+
+
+
+ Write the ASP.Net HttpContext item to the output
+
+ that will receive the formatted result.
+ The on which the pattern converter should be executed.
+ The under which the ASP.Net request is running.
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property.
+
+
+
+
+
+ Converter for items in the ASP.Net Cache.
+
+
+
+ Outputs an item from the .
+
+
+ Ron Grabowski
+
+
+
+ Write the ASP.Net Cache item to the output
+
+ that will receive the formatted result.
+ The on which the pattern converter should be executed.
+ The under which the ASP.Net request is running.
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property.
+
+
+
+
+
+ Converter for items in the ASP.Net Cache.
+
+
+
+ Outputs an item from the .
+
+
+ Ron Grabowski
+
+
+
+ Write the ASP.Net Cache item to the output
+
+ that will receive the formatted result.
+ The on which the pattern converter should be executed.
+ The under which the ASP.Net request is running.
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property. If no property has been set, all key value pairs from the Session will
+ be written to the output.
+
+
+
+
+
+ Date pattern converter, uses a to format
+ the date of a .
+
+
+
+ Render the to the writer as a string.
+
+
+ The value of the determines
+ the formatting of the date. The following values are allowed:
+
+
+ Option value
+ Output
+
+
+ ISO8601
+
+ Uses the formatter.
+ Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern.
+
+
+
+ DATE
+
+ Uses the formatter.
+ Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459".
+
+
+
+ ABSOLUTE
+
+ Uses the formatter.
+ Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459".
+
+
+
+ other
+
+ Any other pattern string uses the formatter.
+ This formatter passes the pattern string to the
+ method.
+ For details on valid patterns see
+ DateTimeFormatInfo Class.
+
+
+
+
+
+ The is in the local time zone and is rendered in that zone.
+ To output the time in Universal time see .
+
+
+ Nicko Cadell
+
+
+
+ The used to render the date to a string
+
+
+
+ The used to render the date to a string
+
+
+
+
+
+ Initialize the converter pattern based on the property.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Convert the pattern into the rendered message
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Pass the to the
+ for it to render it to the writer.
+
+
+ The passed is in the local time zone.
+
+
+
+
+
+ The fully qualified type of the DatePatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Write the exception text to the output
+
+
+
+ If an exception object is stored in the logging event
+ it will be rendered into the pattern output with a
+ trailing newline.
+
+
+ If there is no exception then nothing will be output
+ and no trailing newline will be appended.
+ It is typical to put a newline before the exception
+ and to have the exception as the last data in the pattern.
+
+
+ Nicko Cadell
+
+
+
+ Default constructor
+
+
+
+
+ Write the exception text to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ If an exception object is stored in the logging event
+ it will be rendered into the pattern output with a
+ trailing newline.
+
+
+ If there is no exception or the exception property specified
+ by the Option value does not exist then nothing will be output
+ and no trailing newline will be appended.
+ It is typical to put a newline before the exception
+ and to have the exception as the last data in the pattern.
+
+
+ Recognized values for the Option parameter are:
+
+
+
+ Message
+
+
+ Source
+
+
+ StackTrace
+
+
+ TargetSite
+
+
+ HelpLink
+
+
+
+
+
+
+ Writes the caller location file name to the output
+
+
+
+ Writes the value of the for
+ the event to the output writer.
+
+
+ Nicko Cadell
+
+
+
+ Write the caller location file name to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the value of the for
+ the to the output .
+
+
+
+
+
+ Write the caller location info to the output
+
+
+
+ Writes the to the output writer.
+
+
+ Nicko Cadell
+
+
+
+ Write the caller location info to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the to the output writer.
+
+
+
+
+
+ Writes the event identity to the output
+
+
+
+ Writes the value of the to
+ the output writer.
+
+
+ Daniel Cazzulino
+ Nicko Cadell
+
+
+
+ Writes the event identity to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the value of the
+ to
+ the output .
+
+
+
+
+
+ Write the event level to the output
+
+
+
+ Writes the display name of the event
+ to the writer.
+
+
+ Nicko Cadell
+
+
+
+ Write the event level to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the of the
+ to the .
+
+
+
+
+
+ Write the caller location line number to the output
+
+
+
+ Writes the value of the for
+ the event to the output writer.
+
+
+ Nicko Cadell
+
+
+
+ Write the caller location line number to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the value of the for
+ the to the output .
+
+
+
+
+
+ Converter for logger name
+
+
+
+ Outputs the of the event.
+
+
+ Nicko Cadell
+
+
+
+ Converter to output and truncate '.' separated strings
+
+
+
+ This abstract class supports truncating a '.' separated string
+ to show a specified number of elements from the right hand side.
+ This is used to truncate class names that are fully qualified.
+
+
+ Subclasses should override the method to
+ return the fully qualified string.
+
+
+ Nicko Cadell
+
+
+
+ Initialize the converter
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Get the fully qualified string data
+
+ the event being logged
+ the fully qualified name
+
+
+ Overridden by subclasses to get the fully qualified name before the
+ precision is applied to it.
+
+
+ Return the fully qualified '.' (dot/period) separated string.
+
+
+
+
+
+ Convert the pattern to the rendered message
+
+ that will receive the formatted result.
+ the event being logged
+
+ Render the to the precision
+ specified by the property.
+
+
+
+
+ The fully qualified type of the NamedPatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets the fully qualified name of the logger
+
+ the event being logged
+ The fully qualified logger name
+
+
+ Returns the of the .
+
+
+
+
+
+ Writes the event message to the output
+
+
+
+ Uses the method
+ to write out the event message.
+
+
+ Nicko Cadell
+
+
+
+ Writes the event message to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Uses the method
+ to write out the event message.
+
+
+
+
+
+ Write the method name to the output
+
+
+
+ Writes the caller location to
+ the output.
+
+
+ Nicko Cadell
+
+
+
+ Write the method name to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the caller location to
+ the output.
+
+
+
+
+
+ Converter to include event NDC
+
+
+
+ Outputs the value of the event property named NDC.
+
+
+ The should be used instead.
+
+
+ Nicko Cadell
+
+
+
+ Write the event NDC to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ As the thread context stacks are now stored in named event properties
+ this converter simply looks up the value of the NDC property.
+
+
+ The should be used instead.
+
+
+
+
+
+ Property pattern converter
+
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property.
+
+
+ If the is set to null
+ then all the properties are written as key value pairs.
+
+
+ Nicko Cadell
+
+
+
+ Write the property value to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property.
+
+
+ If the is set to null
+ then all the properties are written as key value pairs.
+
+
+
+
+
+ Converter to output the relative time of the event
+
+
+
+ Converter to output the time of the event relative to the start of the program.
+
+
+ Nicko Cadell
+
+
+
+ Write the relative time to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes out the relative time of the event in milliseconds.
+ That is the number of milliseconds between the event
+ and the .
+
+
+
+
+
+ Helper method to get the time difference between two DateTime objects
+
+ start time (in the current local time zone)
+ end time (in the current local time zone)
+ the time difference in milliseconds
+
+
+
+ Write the caller stack frames to the output
+
+
+
+ Writes the to the output writer, using format:
+ type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...)
+
+
+ Adam Davies
+
+
+
+ Write the caller stack frames to the output
+
+
+
+ Writes the to the output writer, using format:
+ type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1
+
+
+ Michael Cromwell
+
+
+
+ Initialize the converter
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Write the strack frames to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the to the output writer.
+
+
+
+
+
+ Returns the Name of the method
+
+
+ This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter
+ string
+
+
+
+ The fully qualified type of the StackTracePatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ The fully qualified type of the StackTraceDetailPatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Converter to include event thread name
+
+
+
+ Writes the to the output.
+
+
+ Nicko Cadell
+
+
+
+ Write the ThreadName to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Writes the to the .
+
+
+
+
+
+ Pattern converter for the class name
+
+
+
+ Outputs the of the event.
+
+
+ Nicko Cadell
+
+
+
+ Gets the fully qualified name of the class
+
+ the event being logged
+ The fully qualified type name for the caller location
+
+
+ Returns the of the .
+
+
+
+
+
+ Converter to include event user name
+
+ Douglas de la Torre
+ Nicko Cadell
+
+
+
+ Convert the pattern to the rendered message
+
+ that will receive the formatted result.
+ the event being logged
+
+
+
+ Write the TimeStamp to the output
+
+
+
+ Date pattern converter, uses a to format
+ the date of a .
+
+
+ Uses a to format the
+ in Universal time.
+
+
+ See the for details on the date pattern syntax.
+
+
+
+ Nicko Cadell
+
+
+
+ Write the TimeStamp to the output
+
+ that will receive the formatted result.
+ the event being logged
+
+
+ Pass the to the
+ for it to render it to the writer.
+
+
+ The passed is in the local time zone, this is converted
+ to Universal time before it is rendered.
+
+
+
+
+
+
+ The fully qualified type of the UtcDatePatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ A flexible layout configurable with pattern string that re-evaluates on each call.
+
+
+ This class is built on and provides all the
+ features and capabilities of PatternLayout. PatternLayout is a 'static' class
+ in that its layout is done once at configuration time. This class will recreate
+ the layout on each reference.
+ One important difference between PatternLayout and DynamicPatternLayout is the
+ treatment of the Header and Footer parameters in the configuration. The Header and Footer
+ parameters for DynamicPatternLayout must be syntactically in the form of a PatternString,
+ but should not be marked as type log4net.Util.PatternString. Doing so causes the
+ pattern to be statically converted at configuration time and causes DynamicPatternLayout
+ to perform the same as PatternLayout.
+ Please see for complete documentation.
+
+ <layout type="log4net.Layout.DynamicPatternLayout">
+ <param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline" />
+ <param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline" />
+ </layout>
+
+
+
+
+
+ A flexible layout configurable with pattern string.
+
+
+
+ The goal of this class is to a
+ as a string. The results
+ depend on the conversion pattern.
+
+
+ The conversion pattern is closely related to the conversion
+ pattern of the printf function in C. A conversion pattern is
+ composed of literal text and format control expressions called
+ conversion specifiers.
+
+
+ You are free to insert any literal text within the conversion
+ pattern.
+
+
+ Each conversion specifier starts with a percent sign (%) and is
+ followed by optional format modifiers and a conversion
+ pattern name. The conversion pattern name specifies the type of
+ data, e.g. logger, level, date, thread name. The format
+ modifiers control such things as field width, padding, left and
+ right justification. The following is a simple example.
+
+
+ Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume
+ that the log4net environment was set to use a PatternLayout. Then the
+ statements
+
+
+ ILog log = LogManager.GetLogger(typeof(TestApp));
+ log.Debug("Message 1");
+ log.Warn("Message 2");
+
+ would yield the output
+
+ DEBUG [main]: Message 1
+ WARN [main]: Message 2
+
+
+ Note that there is no explicit separator between text and
+ conversion specifiers. The pattern parser knows when it has reached
+ the end of a conversion specifier when it reads a conversion
+ character. In the example above the conversion specifier
+ %-5level means the level of the logging event should be left
+ justified to a width of five characters.
+
+
+ The recognized conversion pattern names are:
+
+
+
+ Conversion Pattern Name
+ Effect
+
+
+ a
+ Equivalent to appdomain
+
+
+ appdomain
+
+ Used to output the friendly name of the AppDomain where the
+ logging event was generated.
+
+
+
+ aspnet-cache
+
+
+ Used to output all cache items in the case of %aspnet-cache or just one named item if used as %aspnet-cache{key}
+
+
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+
+
+
+
+ aspnet-context
+
+
+ Used to output all context items in the case of %aspnet-context or just one named item if used as %aspnet-context{key}
+
+
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+
+
+
+
+ aspnet-request
+
+
+ Used to output all request parameters in the case of %aspnet-request or just one named param if used as %aspnet-request{key}
+
+
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+
+
+
+
+ aspnet-session
+
+
+ Used to output all session items in the case of %aspnet-session or just one named item if used as %aspnet-session{key}
+
+
+ This pattern is not available for Compact Framework or Client Profile assemblies.
+
+
+
+
+ c
+ Equivalent to logger
+
+
+ C
+ Equivalent to type
+
+
+ class
+ Equivalent to type
+
+
+ d
+ Equivalent to date
+
+
+ date
+
+
+ Used to output the date of the logging event in the local time zone.
+ To output the date in universal time use the %utcdate pattern.
+ The date conversion
+ specifier may be followed by a date format specifier enclosed
+ between braces. For example, %date{HH:mm:ss,fff} or
+ %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is
+ given then ISO8601 format is
+ assumed ().
+
+
+ The date format specifier admits the same syntax as the
+ time pattern string of the .
+
+
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ ,
+ and respectively
+ . For example,
+ %date{ISO8601} or %date{ABSOLUTE}.
+
+
+ These dedicated date formatters perform significantly
+ better than .
+
+
+
+
+ exception
+
+
+ Used to output the exception passed in with the log message.
+
+
+ If an exception object is stored in the logging event
+ it will be rendered into the pattern output with a
+ trailing newline.
+ If there is no exception then nothing will be output
+ and no trailing newline will be appended.
+ It is typical to put a newline before the exception
+ and to have the exception as the last data in the pattern.
+
+
+
+
+ F
+ Equivalent to file
+
+
+ file
+
+
+ Used to output the file name where the logging request was
+ issued.
+
+
+ WARNING Generating caller location information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+
+
+ See the note below on the availability of caller location information.
+
+
+
+
+ identity
+
+
+ Used to output the user name for the currently active user
+ (Principal.Identity.Name).
+
+
+ WARNING Generating caller information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+
+
+
+
+ l
+ Equivalent to location
+
+
+ L
+ Equivalent to line
+
+
+ location
+
+
+ Used to output location information of the caller which generated
+ the logging event.
+
+
+ The location information depends on the CLI implementation but
+ usually consists of the fully qualified name of the calling
+ method followed by the callers source the file name and line
+ number between parentheses.
+
+
+ The location information can be very useful. However, its
+ generation is extremely slow. Its use should be avoided
+ unless execution speed is not an issue.
+
+
+ See the note below on the availability of caller location information.
+
+
+
+
+ level
+
+
+ Used to output the level of the logging event.
+
+
+
+
+ line
+
+
+ Used to output the line number from where the logging request
+ was issued.
+
+
+ WARNING Generating caller location information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+
+
+ See the note below on the availability of caller location information.
+
+
+
+
+ logger
+
+
+ Used to output the logger of the logging event. The
+ logger conversion specifier can be optionally followed by
+ precision specifier, that is a decimal constant in
+ brackets.
+
+
+ If a precision specifier is given, then only the corresponding
+ number of right most components of the logger name will be
+ printed. By default the logger name is printed in full.
+
+
+ For example, for the logger name "a.b.c" the pattern
+ %logger{2} will output "b.c".
+
+
+
+
+ m
+ Equivalent to message
+
+
+ M
+ Equivalent to method
+
+
+ message
+
+
+ Used to output the application supplied message associated with
+ the logging event.
+
+
+
+
+ mdc
+
+
+ The MDC (old name for the ThreadContext.Properties) is now part of the
+ combined event properties. This pattern is supported for compatibility
+ but is equivalent to property.
+
+
+
+
+ method
+
+
+ Used to output the method name where the logging request was
+ issued.
+
+
+ WARNING Generating caller location information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+
+
+ See the note below on the availability of caller location information.
+
+
+
+
+ n
+ Equivalent to newline
+
+
+ newline
+
+
+ Outputs the platform dependent line separator character or
+ characters.
+
+
+ This conversion pattern offers the same performance as using
+ non-portable line separator strings such as "\n", or "\r\n".
+ Thus, it is the preferred way of specifying a line separator.
+
+
+
+
+ ndc
+
+
+ Used to output the NDC (nested diagnostic context) associated
+ with the thread that generated the logging event.
+
+
+
+
+ p
+ Equivalent to level
+
+
+ P
+ Equivalent to property
+
+
+ properties
+ Equivalent to property
+
+
+ property
+
+
+ Used to output the an event specific property. The key to
+ lookup must be specified within braces and directly following the
+ pattern specifier, e.g. %property{user} would include the value
+ from the property that is keyed by the string 'user'. Each property value
+ that is to be included in the log must be specified separately.
+ Properties are added to events by loggers or appenders. By default
+ the log4net:HostName property is set to the name of machine on
+ which the event was originally logged.
+
+
+ If no key is specified, e.g. %property then all the keys and their
+ values are printed in a comma separated list.
+
+
+ The properties of an event are combined from a number of different
+ contexts. These are listed below in the order in which they are searched.
+
+
+
+ the event properties
+
+ The event has that can be set. These
+ properties are specific to this event only.
+
+
+
+ the thread properties
+
+ The that are set on the current
+ thread. These properties are shared by all events logged on this thread.
+
+
+
+ the global properties
+
+ The that are set globally. These
+ properties are shared by all the threads in the AppDomain.
+
+
+
+
+
+
+
+ r
+ Equivalent to timestamp
+
+
+ stacktrace
+
+
+ Used to output the stack trace of the logging event
+ The stack trace level specifier may be enclosed
+ between braces. For example, %stacktrace{level}.
+ If no stack trace level specifier is given then 1 is assumed
+
+
+ Output uses the format:
+ type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1
+
+
+ This pattern is not available for Compact Framework assemblies.
+
+
+
+
+ stacktracedetail
+
+
+ Used to output the stack trace of the logging event
+ The stack trace level specifier may be enclosed
+ between braces. For example, %stacktracedetail{level}.
+ If no stack trace level specifier is given then 1 is assumed
+
+
+ Output uses the format:
+ type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...)
+
+
+ This pattern is not available for Compact Framework assemblies.
+
+
+
+
+ t
+ Equivalent to thread
+
+
+ timestamp
+
+
+ Used to output the number of milliseconds elapsed since the start
+ of the application until the creation of the logging event.
+
+
+
+
+ thread
+
+
+ Used to output the name of the thread that generated the
+ logging event. Uses the thread number if no name is available.
+
+
+
+
+ type
+
+
+ Used to output the fully qualified type name of the caller
+ issuing the logging request. This conversion specifier
+ can be optionally followed by precision specifier, that
+ is a decimal constant in brackets.
+
+
+ If a precision specifier is given, then only the corresponding
+ number of right most components of the class name will be
+ printed. By default the class name is output in fully qualified form.
+
+
+ For example, for the class name "log4net.Layout.PatternLayout", the
+ pattern %type{1} will output "PatternLayout".
+
+
+ WARNING Generating the caller class information is
+ slow. Thus, its use should be avoided unless execution speed is
+ not an issue.
+
+
+ See the note below on the availability of caller location information.
+
+
+
+
+ u
+ Equivalent to identity
+
+
+ username
+
+
+ Used to output the WindowsIdentity for the currently
+ active user.
+
+
+ WARNING Generating caller WindowsIdentity information is
+ extremely slow. Its use should be avoided unless execution speed
+ is not an issue.
+
+
+
+
+ utcdate
+
+
+ Used to output the date of the logging event in universal time.
+ The date conversion
+ specifier may be followed by a date format specifier enclosed
+ between braces. For example, %utcdate{HH:mm:ss,fff} or
+ %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is
+ given then ISO8601 format is
+ assumed ().
+
+
+ The date format specifier admits the same syntax as the
+ time pattern string of the .
+
+
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ ,
+ and respectively
+ . For example,
+ %utcdate{ISO8601} or %utcdate{ABSOLUTE}.
+
+
+ These dedicated date formatters perform significantly
+ better than .
+
+
+
+
+ w
+ Equivalent to username
+
+
+ x
+ Equivalent to ndc
+
+
+ X
+ Equivalent to mdc
+
+
+ %
+
+
+ The sequence %% outputs a single percent sign.
+
+
+
+
+
+ The single letter patterns are deprecated in favor of the
+ longer more descriptive pattern names.
+
+
+ By default the relevant information is output as is. However,
+ with the aid of format modifiers it is possible to change the
+ minimum field width, the maximum field width and justification.
+
+
+ The optional format modifier is placed between the percent sign
+ and the conversion pattern name.
+
+
+ The first optional format modifier is the left justification
+ flag which is just the minus (-) character. Then comes the
+ optional minimum field width modifier. This is a decimal
+ constant that represents the minimum number of characters to
+ output. If the data item requires fewer characters, it is padded on
+ either the left or the right until the minimum width is
+ reached. The default is to pad on the left (right justify) but you
+ can specify right padding with the left justification flag. The
+ padding character is space. If the data item is larger than the
+ minimum field width, the field is expanded to accommodate the
+ data. The value is never truncated.
+
+
+ This behavior can be changed using the maximum field
+ width modifier which is designated by a period followed by a
+ decimal constant. If the data item is longer than the maximum
+ field, then the extra characters are removed from the
+ beginning of the data item and not from the end. For
+ example, it the maximum field width is eight and the data item is
+ ten characters long, then the first two characters of the data item
+ are dropped. This behavior deviates from the printf function in C
+ where truncation is done from the end.
+
+
+ Below are various format modifier examples for the logger
+ conversion specifier.
+
+
+
+
+
Format modifier
+
left justify
+
minimum width
+
maximum width
+
comment
+
+
+
%20logger
+
false
+
20
+
none
+
+
+ Left pad with spaces if the logger name is less than 20
+ characters long.
+
+
+
+
+
%-20logger
+
true
+
20
+
none
+
+
+ Right pad with spaces if the logger
+ name is less than 20 characters long.
+
+
+
+
+
%.30logger
+
NA
+
none
+
30
+
+
+ Truncate from the beginning if the logger
+ name is longer than 30 characters.
+
+
+
+
+
%20.30logger
+
false
+
20
+
30
+
+
+ Left pad with spaces if the logger name is shorter than 20
+ characters. However, if logger name is longer than 30 characters,
+ then truncate from the beginning.
+
+
+
+
+
%-20.30logger
+
true
+
20
+
30
+
+
+ Right pad with spaces if the logger name is shorter than 20
+ characters. However, if logger name is longer than 30 characters,
+ then truncate from the beginning.
+
+
+
+
+
+
+ Note about caller location information.
+ The following patterns %type %file %line %method %location %class %C %F %L %l %M
+ all generate caller location information.
+ Location information uses the System.Diagnostics.StackTrace class to generate
+ a call stack. The caller's information is then extracted from this stack.
+
+
+
+ The System.Diagnostics.StackTrace class is not supported on the
+ .NET Compact Framework 1.0 therefore caller location information is not
+ available on that framework.
+
+
+
+
+ The System.Diagnostics.StackTrace class has this to say about Release builds:
+
+
+ "StackTrace information will be most informative with Debug build configurations.
+ By default, Debug builds include debug symbols, while Release builds do not. The
+ debug symbols contain most of the file, method name, line number, and column
+ information used in constructing StackFrame and StackTrace objects. StackTrace
+ might not report as many method calls as expected, due to code transformations
+ that occur during optimization."
+
+
+ This means that in a Release build the caller information may be incomplete or may
+ not exist at all! Therefore caller location information cannot be relied upon in a Release build.
+
+
+
+ Additional pattern converters may be registered with a specific
+ instance using the method.
+
+
+
+ This is a more detailed pattern.
+ %timestamp [%thread] %level %logger %ndc - %message%newline
+
+
+ A similar pattern except that the relative time is
+ right padded if less than 6 digits, thread name is right padded if
+ less than 15 characters and truncated if longer and the logger
+ name is left padded if shorter than 30 characters and truncated if
+ longer.
+ %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline
+
+ Nicko Cadell
+ Gert Driesen
+ Douglas de la Torre
+ Daniel Cazzulino
+
+
+
+ Extend this abstract class to create your own log layout format.
+
+
+
+ This is the base implementation of the
+ interface. Most layout objects should extend this class.
+
+
+
+
+
+ Subclasses must implement the
+ method.
+
+
+ Subclasses should set the in their default
+ constructor.
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Interface implemented by layout objects
+
+
+
+ An object is used to format a
+ as text. The method is called by an
+ appender to transform the into a string.
+
+
+ The layout can also supply and
+ text that is appender before any events and after all the events respectively.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Implement this method to create your own layout format.
+
+ The TextWriter to write the formatted event to
+ The event to format
+
+
+ This method is called by an appender to format
+ the as text and output to a writer.
+
+
+ If the caller does not have a and prefers the
+ event to be formatted as a then the following
+ code can be used to format the event into a .
+
+
+ StringWriter writer = new StringWriter();
+ Layout.Format(writer, loggingEvent);
+ string formattedEvent = writer.ToString();
+
+
+
+
+
+ The content type output by this layout.
+
+ The content type
+
+
+ The content type output by this layout.
+
+
+ This is a MIME type e.g. "text/plain".
+
+
+
+
+
+ The header for the layout format.
+
+ the layout header
+
+
+ The Header text will be appended before any logging events
+ are formatted and appended.
+
+
+
+
+
+ The footer for the layout format.
+
+ the layout footer
+
+
+ The Footer text will be appended after all the logging events
+ have been formatted and appended.
+
+
+
+
+
+ Flag indicating if this layout handle exceptions
+
+ false if this layout handles exceptions
+
+
+ If this layout handles the exception object contained within
+ , then the layout should return
+ false. Otherwise, if the layout ignores the exception
+ object, then the layout should return true.
+
+
+
+
+
+ The header text
+
+
+
+ See for more information.
+
+
+
+
+
+ The footer text
+
+
+
+ See for more information.
+
+
+
+
+
+ Flag indicating if this layout handles exceptions
+
+
+
+ false if this layout handles exceptions
+
+
+
+
+
+ Empty default constructor
+
+
+
+ Empty default constructor
+
+
+
+
+
+ Activate component options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ This method must be implemented by the subclass.
+
+
+
+
+
+ Implement this method to create your own layout format.
+
+ The TextWriter to write the formatted event to
+ The event to format
+
+
+ This method is called by an appender to format
+ the as text.
+
+
+
+
+
+ Convenience method for easily formatting the logging event into a string variable.
+
+
+
+ Creates a new StringWriter instance to store the formatted logging event.
+
+
+
+
+ The content type output by this layout.
+
+ The content type is "text/plain"
+
+
+ The content type output by this layout.
+
+
+ This base class uses the value "text/plain".
+ To change this value a subclass must override this
+ property.
+
+
+
+
+
+ The header for the layout format.
+
+ the layout header
+
+
+ The Header text will be appended before any logging events
+ are formatted and appended.
+
+
+
+
+
+ The footer for the layout format.
+
+ the layout footer
+
+
+ The Footer text will be appended after all the logging events
+ have been formatted and appended.
+
+
+
+
+
+ Flag indicating if this layout handles exceptions
+
+ false if this layout handles exceptions
+
+
+ If this layout handles the exception object contained within
+ , then the layout should return
+ false. Otherwise, if the layout ignores the exception
+ object, then the layout should return true.
+
+
+ Set this value to override a this default setting. The default
+ value is true, this layout does not handle the exception.
+
+
+
+
+
+ Default pattern string for log output.
+
+
+
+ Default pattern string for log output.
+ Currently set to the string "%message%newline"
+ which just prints the application supplied message.
+
+
+
+
+
+ A detailed conversion pattern
+
+
+
+ A conversion pattern which includes Time, Thread, Logger, and Nested Context.
+ Current value is %timestamp [%thread] %level %logger %ndc - %message%newline.
+
+
+
+
+
+ Internal map of converter identifiers to converter types.
+
+
+
+ This static map is overridden by the m_converterRegistry instance map
+
+
+
+
+
+ the pattern
+
+
+
+
+ the head of the pattern converter chain
+
+
+
+
+ patterns defined on this PatternLayout only
+
+
+
+
+ Initialize the global registry
+
+
+
+ Defines the builtin global rules.
+
+
+
+
+
+ Constructs a PatternLayout using the DefaultConversionPattern
+
+
+
+ The default pattern just produces the application supplied message.
+
+
+ Note to Inheritors: This constructor calls the virtual method
+ . If you override this method be
+ aware that it will be called before your is called constructor.
+
+
+ As per the contract the
+ method must be called after the properties on this object have been
+ configured.
+
+
+
+
+
+ Constructs a PatternLayout using the supplied conversion pattern
+
+ the pattern to use
+
+
+ Note to Inheritors: This constructor calls the virtual method
+ . If you override this method be
+ aware that it will be called before your is called constructor.
+
+
+ When using this constructor the method
+ need not be called. This may not be the case when using a subclass.
+
+
+
+
+
+ Create the pattern parser instance
+
+ the pattern to parse
+ The that will format the event
+
+
+ Creates the used to parse the conversion string. Sets the
+ global and instance rules on the .
+
+
+
+
+
+ Initialize layout options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Produces a formatted string as specified by the conversion pattern.
+
+ the event being logged
+ The TextWriter to write the formatted event to
+
+
+ Parse the using the patter format
+ specified in the property.
+
+
+
+
+
+ Add a converter to this PatternLayout
+
+ the converter info
+
+
+ This version of the method is used by the configurator.
+ Programmatic users should use the alternative method.
+
+
+
+
+
+ Add a converter to this PatternLayout
+
+ the name of the conversion pattern for this converter
+ the type of the converter
+
+
+ Add a named pattern converter to this instance. This
+ converter will be used in the formatting of the event.
+ This method must be called before .
+
+
+ The specified must extend the
+ type.
+
+
+
+
+
+ The pattern formatting string
+
+
+
+ The ConversionPattern option. This is the string which
+ controls formatting and consists of a mix of literal content and
+ conversion specifiers.
+
+
+
+
+
+ The header PatternString
+
+
+
+
+ The footer PatternString
+
+
+
+
+ Constructs a DynamicPatternLayout using the DefaultConversionPattern
+
+
+
+ The default pattern just produces the application supplied message.
+
+
+
+
+
+ Constructs a DynamicPatternLayout using the supplied conversion pattern
+
+ the pattern to use
+
+
+
+
+
+ The header for the layout format.
+
+ the layout header
+
+
+ The Header text will be appended before any logging events
+ are formatted and appended.
+
+ The pattern will be formatted on each get operation.
+
+
+
+
+ The footer for the layout format.
+
+ the layout footer
+
+
+ The Footer text will be appended after all the logging events
+ have been formatted and appended.
+
+ The pattern will be formatted on each get operation.
+
+
+
+
+ A Layout that renders only the Exception text from the logging event
+
+
+
+ A Layout that renders only the Exception text from the logging event.
+
+
+ This Layout should only be used with appenders that utilize multiple
+ layouts (e.g. ).
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Default constructor
+
+
+
+ Constructs a ExceptionLayout
+
+
+
+
+
+ Activate component options
+
+
+
+ Part of the component activation
+ framework.
+
+
+ This method does nothing as options become effective immediately.
+
+
+
+
+
+ Gets the exception text from the logging event
+
+ The TextWriter to write the formatted event to
+ the event being logged
+
+
+ Write the exception string to the .
+ The exception string is retrieved from .
+
+
+
+
+
+ Interface for raw layout objects
+
+
+
+ Interface used to format a
+ to an object.
+
+
+ This interface should not be confused with the
+ interface. This interface is used in
+ only certain specialized situations where a raw object is
+ required rather than a formatted string. The
+ is not generally useful than this interface.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Implement this method to create your own layout format.
+
+ The event to format
+ returns the formatted event
+
+
+ Implement this method to create your own layout format.
+
+
+
+
+
+ Adapts any to a
+
+
+
+ Where an is required this adapter
+ allows a to be specified.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ The layout to adapt
+
+
+
+
+ Construct a new adapter
+
+ the layout to adapt
+
+
+ Create the adapter for the specified .
+
+
+
+
+
+ Format the logging event as an object.
+
+ The event to format
+ returns the formatted event
+
+
+ Format the logging event as an object.
+
+
+ Uses the object supplied to
+ the constructor to perform the formatting.
+
+
+
+
+
+ Type converter for the interface
+
+
+
+ Used to convert objects to the interface.
+ Supports converting from the interface to
+ the interface using the .
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Interface supported by type converters
+
+
+
+ This interface supports conversion from arbitrary types
+ to a single target type. See .
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Can the source type be converted to the type supported by this object
+
+ the type to convert
+ true if the conversion is possible
+
+
+ Test if the can be converted to the
+ type supported by this converter.
+
+
+
+
+
+ Convert the source object to the type supported by this object
+
+ the object to convert
+ the converted object
+
+
+ Converts the to the type supported
+ by this converter.
+
+
+
+
+
+ Can the sourceType be converted to an
+
+ the source to be to be converted
+ true if the source type can be converted to
+
+
+ Test if the can be converted to a
+ . Only is supported
+ as the .
+
+
+
+
+
+ Convert the value to a object
+
+ the value to convert
+ the object
+
+
+ Convert the object to a
+ object. If the object
+ is a then the
+ is used to adapt between the two interfaces, otherwise an
+ exception is thrown.
+
+
+
+
+
+ Extract the value of a property from the
+
+
+
+ Extract the value of a property from the
+
+
+ Nicko Cadell
+
+
+
+ Constructs a RawPropertyLayout
+
+
+
+
+ Lookup the property for
+
+ The event to format
+ returns property value
+
+
+ Looks up and returns the object value of the property
+ named . If there is no property defined
+ with than name then null will be returned.
+
+
+
+
+
+ The name of the value to lookup in the LoggingEvent Properties collection.
+
+
+ Value to lookup in the LoggingEvent Properties collection
+
+
+
+ String name of the property to lookup in the .
+
+
+
+
+
+ Extract the date from the
+
+
+
+ Extract the date from the
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructs a RawTimeStampLayout
+
+
+
+
+ Gets the as a .
+
+ The event to format
+ returns the time stamp
+
+
+ Gets the as a .
+
+
+ The time stamp is in local time. To format the time stamp
+ in universal time use .
+
+
+
+
+
+ Extract the date from the
+
+
+
+ Extract the date from the
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructs a RawUtcTimeStampLayout
+
+
+
+
+ Gets the as a .
+
+ The event to format
+ returns the time stamp
+
+
+ Gets the as a .
+
+
+ The time stamp is in universal time. To format the time stamp
+ in local time use .
+
+
+
+
+
+ A very simple layout
+
+
+
+ SimpleLayout consists of the level of the log statement,
+ followed by " - " and then the log message itself. For example,
+
+ DEBUG - Hello world
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructs a SimpleLayout
+
+
+
+
+ Initialize layout options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Produces a simple formatted output.
+
+ the event being logged
+ The TextWriter to write the formatted event to
+
+
+ Formats the event as the level of the even,
+ followed by " - " and then the log message itself. The
+ output is terminated by a newline.
+
+
+
+
+
+ Layout that formats the log events as XML elements.
+
+
+
+ The output of the consists of a series of
+ log4net:event elements. It does not output a complete well-formed XML
+ file. The output is designed to be included as an external entity
+ in a separate file to form a correct XML file.
+
+
+ For example, if abc is the name of the file where
+ the output goes, then a well-formed XML file would
+ be:
+
+
+ <?xml version="1.0" ?>
+
+ <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]>
+
+ <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2>
+ &data;
+ </log4net:events>
+
+
+ This approach enforces the independence of the
+ and the appender where it is embedded.
+
+
+ The version attribute helps components to correctly
+ interpret output generated by . The value of
+ this attribute should be "1.2" for release 1.2 and later.
+
+
+ Alternatively the Header and Footer properties can be
+ configured to output the correct XML header, open tag and close tag.
+ When setting the Header and Footer properties it is essential
+ that the underlying data store not be appendable otherwise the data
+ will become invalid XML.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Layout that formats the log events as XML elements.
+
+
+
+ This is an abstract class that must be subclassed by an implementation
+ to conform to a specific schema.
+
+
+ Deriving classes must implement the method.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Protected constructor to support subclasses
+
+
+
+ Initializes a new instance of the class
+ with no location info.
+
+
+
+
+
+ Protected constructor to support subclasses
+
+
+
+ The parameter determines whether
+ location information will be output by the layout. If
+ is set to true, then the
+ file name and line number of the statement at the origin of the log
+ statement will be output.
+
+
+ If you are embedding this layout within an SMTPAppender
+ then make sure to set the LocationInfo option of that
+ appender as well.
+
+
+
+
+
+ Initialize layout options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Produces a formatted string.
+
+ The event being logged.
+ The TextWriter to write the formatted event to
+
+
+ Format the and write it to the .
+
+
+ This method creates an that writes to the
+ . The is passed
+ to the method. Subclasses should override the
+ method rather than this method.
+
+
+
+
+
+ Does the actual writing of the XML.
+
+ The writer to use to output the event to.
+ The event to write.
+
+
+ Subclasses should override this method to format
+ the as XML.
+
+
+
+
+
+ Flag to indicate if location information should be included in
+ the XML events.
+
+
+
+
+ The string to replace invalid chars with
+
+
+
+
+ Gets a value indicating whether to include location information in
+ the XML events.
+
+
+ true if location information should be included in the XML
+ events; otherwise, false.
+
+
+
+ If is set to true, then the file
+ name and line number of the statement at the origin of the log
+ statement will be output.
+
+
+ If you are embedding this layout within an SMTPAppender
+ then make sure to set the LocationInfo option of that
+ appender as well.
+
+
+
+
+
+ The string to replace characters that can not be expressed in XML with.
+
+
+ Not all characters may be expressed in XML. This property contains the
+ string to replace those that can not with. This defaults to a ?. Set it
+ to the empty string to simply remove offending characters. For more
+ details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets
+ Character replacement will occur in the log message, the property names
+ and the property values.
+
+
+
+
+
+
+ Gets the content type output by this layout.
+
+
+ As this is the XML layout, the value is always "text/xml".
+
+
+
+ As this is the XML layout, the value is always "text/xml".
+
+
+
+
+
+ Constructs an XmlLayout
+
+
+
+
+ Constructs an XmlLayout.
+
+
+
+ The LocationInfo option takes a boolean value. By
+ default, it is set to false which means there will be no location
+ information output by this layout. If the the option is set to
+ true, then the file name and line number of the statement
+ at the origin of the log statement will be output.
+
+
+ If you are embedding this layout within an SmtpAppender
+ then make sure to set the LocationInfo option of that
+ appender as well.
+
+
+
+
+
+ Initialize layout options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ Builds a cache of the element names
+
+
+
+
+
+ Does the actual writing of the XML.
+
+ The writer to use to output the event to.
+ The event to write.
+
+
+ Override the base class method
+ to write the to the .
+
+
+
+
+
+ The prefix to use for all generated element names
+
+
+
+
+ The prefix to use for all element names
+
+
+
+ The default prefix is log4net. Set this property
+ to change the prefix. If the prefix is set to an empty string
+ then no prefix will be written.
+
+
+
+
+
+ Set whether or not to base64 encode the message.
+
+
+
+ By default the log message will be written as text to the xml
+ output. This can cause problems when the message contains binary
+ data. By setting this to true the contents of the message will be
+ base64 encoded. If this is set then invalid character replacement
+ (see ) will not be performed
+ on the log message.
+
+
+
+
+
+ Set whether or not to base64 encode the property values.
+
+
+
+ By default the properties will be written as text to the xml
+ output. This can cause problems when one or more properties contain
+ binary data. By setting this to true the values of the properties
+ will be base64 encoded. If this is set then invalid character replacement
+ (see ) will not be performed
+ on the property values.
+
+
+
+
+
+ Layout that formats the log events as XML elements compatible with the log4j schema
+
+
+
+ Formats the log events according to the http://logging.apache.org/log4j schema.
+
+
+ Nicko Cadell
+
+
+
+ The 1st of January 1970 in UTC
+
+
+
+
+ Constructs an XMLLayoutSchemaLog4j
+
+
+
+
+ Constructs an XMLLayoutSchemaLog4j.
+
+
+
+ The LocationInfo option takes a boolean value. By
+ default, it is set to false which means there will be no location
+ information output by this layout. If the the option is set to
+ true, then the file name and line number of the statement
+ at the origin of the log statement will be output.
+
+
+ If you are embedding this layout within an SMTPAppender
+ then make sure to set the LocationInfo option of that
+ appender as well.
+
+
+
+
+
+ Actually do the writing of the xml
+
+ the writer to use
+ the event to write
+
+
+ Generate XML that is compatible with the log4j schema.
+
+
+
+
+
+ The version of the log4j schema to use.
+
+
+
+ Only version 1.2 of the log4j schema is supported.
+
+
+
+
+
+ The default object Renderer.
+
+
+
+ The default renderer supports rendering objects and collections to strings.
+
+
+ See the method for details of the output.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Implement this interface in order to render objects as strings
+
+
+
+ Certain types require special case conversion to
+ string form. This conversion is done by an object renderer.
+ Object renderers implement the
+ interface.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Render the object to a string
+
+ The map used to lookup renderers
+ The object to render
+ The writer to render to
+
+
+ Render the object to a
+ string.
+
+
+ The parameter is
+ provided to lookup and render other objects. This is
+ very useful where contains
+ nested objects of unknown type. The
+ method can be used to render these objects.
+
+
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ Render the object to a string
+
+ The map used to lookup renderers
+ The object to render
+ The writer to render to
+
+
+ Render the object to a string.
+
+
+ The parameter is
+ provided to lookup and render other objects. This is
+ very useful where contains
+ nested objects of unknown type. The
+ method can be used to render these objects.
+
+
+ The default renderer supports rendering objects to strings as follows:
+
+
+
+ Value
+ Rendered String
+
+
+ null
+
+ "(null)"
+
+
+
+
+
+
+ For a one dimensional array this is the
+ array type name, an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace.
+
+
+ For example: int[] {1, 2, 3}.
+
+
+ If the array is not one dimensional the
+ Array.ToString() is returned.
+
+
+
+
+ , &
+
+
+ Rendered as an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace.
+
+
+ For example: {a, b, c}.
+
+
+ All collection classes that implement its subclasses,
+ or generic equivalents all implement the interface.
+
+
+
+
+
+
+
+ Rendered as the key, an equals sign ('='), and the value (using the appropriate
+ renderer).
+
+
+ For example: key=value.
+
+
+
+
+ other
+
+ Object.ToString()
+
+
+
+
+
+
+
+ Render the array argument into a string
+
+ The map used to lookup renderers
+ the array to render
+ The writer to render to
+
+
+ For a one dimensional array this is the
+ array type name, an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace. For example:
+ int[] {1, 2, 3}.
+
+
+ If the array is not one dimensional the
+ Array.ToString() is returned.
+
+
+
+
+
+ Render the enumerator argument into a string
+
+ The map used to lookup renderers
+ the enumerator to render
+ The writer to render to
+
+
+ Rendered as an open brace, followed by a comma
+ separated list of the elements (using the appropriate
+ renderer), followed by a close brace. For example:
+ {a, b, c}.
+
+
+
+
+
+ Render the DictionaryEntry argument into a string
+
+ The map used to lookup renderers
+ the DictionaryEntry to render
+ The writer to render to
+
+
+ Render the key, an equals sign ('='), and the value (using the appropriate
+ renderer). For example: key=value.
+
+
+
+
+
+ Map class objects to an .
+
+
+
+ Maintains a mapping between types that require special
+ rendering and the that
+ is used to render them.
+
+
+ The method is used to render an
+ object using the appropriate renderers defined in this map.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Default Constructor
+
+
+
+ Default constructor.
+
+
+
+
+
+ Render using the appropriate renderer.
+
+ the object to render to a string
+ the object rendered as a string
+
+
+ This is a convenience method used to render an object to a string.
+ The alternative method
+ should be used when streaming output to a .
+
+
+
+
+
+ Render using the appropriate renderer.
+
+ the object to render to a string
+ The writer to render to
+
+
+ Find the appropriate renderer for the type of the
+ parameter. This is accomplished by calling the
+ method. Once a renderer is found, it is
+ applied on the object and the result is returned
+ as a .
+
+
+
+
+
+ Gets the renderer for the specified object type
+
+ the object to lookup the renderer for
+ the renderer for
+
+
+ Gets the renderer for the specified object type.
+
+
+ Syntactic sugar method that calls
+ with the type of the object parameter.
+
+
+
+
+
+ Gets the renderer for the specified type
+
+ the type to lookup the renderer for
+ the renderer for the specified type
+
+
+ Returns the renderer for the specified type.
+ If no specific renderer has been defined the
+ will be returned.
+
+
+
+
+
+ Internal function to recursively search interfaces
+
+ the type to lookup the renderer for
+ the renderer for the specified type
+
+
+
+ Clear the map of renderers
+
+
+
+ Clear the custom renderers defined by using
+ . The
+ cannot be removed.
+
+
+
+
+
+ Register an for .
+
+ the type that will be rendered by
+ the renderer for
+
+
+ Register an object renderer for a specific source type.
+ This renderer will be returned from a call to
+ specifying the same as an argument.
+
+
+
+
+
+ Get the default renderer instance
+
+ the default renderer
+
+
+ Get the default renderer
+
+
+
+
+
+ Interface implemented by logger repository plugins.
+
+
+
+ Plugins define additional behavior that can be associated
+ with a .
+ The held by the
+ property is used to store the plugins for a repository.
+
+
+ The log4net.Config.PluginAttribute can be used to
+ attach plugins to repositories created using configuration
+ attributes.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Attaches the plugin to the specified .
+
+ The that this plugin should be attached to.
+
+
+ A plugin may only be attached to a single repository.
+
+
+ This method is called when the plugin is attached to the repository.
+
+
+
+
+
+ Is called when the plugin is to shutdown.
+
+
+
+ This method is called to notify the plugin that
+ it should stop operating and should detach from
+ the repository.
+
+
+
+
+
+ Gets the name of the plugin.
+
+
+ The name of the plugin.
+
+
+
+ Plugins are stored in the
+ keyed by name. Each plugin instance attached to a
+ repository must be a unique name.
+
+
+
+
+
+ A strongly-typed collection of objects.
+
+ Nicko Cadell
+
+
+
+ Creates a read-only wrapper for a PluginCollection instance.
+
+ list to create a readonly wrapper arround
+
+ A PluginCollection wrapper that is read-only.
+
+
+
+
+ Initializes a new instance of the PluginCollection class
+ that is empty and has the default initial capacity.
+
+
+
+
+ Initializes a new instance of the PluginCollection class
+ that has the specified initial capacity.
+
+
+ The number of elements that the new PluginCollection is initially capable of storing.
+
+
+
+
+ Initializes a new instance of the PluginCollection class
+ that contains elements copied from the specified PluginCollection.
+
+ The PluginCollection whose elements are copied to the new collection.
+
+
+
+ Initializes a new instance of the PluginCollection class
+ that contains elements copied from the specified array.
+
+ The array whose elements are copied to the new list.
+
+
+
+ Initializes a new instance of the PluginCollection class
+ that contains elements copied from the specified collection.
+
+ The collection whose elements are copied to the new list.
+
+
+
+ Allow subclasses to avoid our default constructors
+
+
+
+
+
+
+ Copies the entire PluginCollection to a one-dimensional
+ array.
+
+ The one-dimensional array to copy to.
+
+
+
+ Copies the entire PluginCollection to a one-dimensional
+ array, starting at the specified index of the target array.
+
+ The one-dimensional array to copy to.
+ The zero-based index in at which copying begins.
+
+
+
+ Adds a to the end of the PluginCollection.
+
+ The to be added to the end of the PluginCollection.
+ The index at which the value has been added.
+
+
+
+ Removes all elements from the PluginCollection.
+
+
+
+
+ Creates a shallow copy of the .
+
+ A new with a shallow copy of the collection data.
+
+
+
+ Determines whether a given is in the PluginCollection.
+
+ The to check for.
+ true if is found in the PluginCollection; otherwise, false.
+
+
+
+ Returns the zero-based index of the first occurrence of a
+ in the PluginCollection.
+
+ The to locate in the PluginCollection.
+
+ The zero-based index of the first occurrence of
+ in the entire PluginCollection, if found; otherwise, -1.
+
+
+
+
+ Inserts an element into the PluginCollection at the specified index.
+
+ The zero-based index at which should be inserted.
+ The to insert.
+
+ is less than zero
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Removes the first occurrence of a specific from the PluginCollection.
+
+ The to remove from the PluginCollection.
+
+ The specified was not found in the PluginCollection.
+
+
+
+
+ Removes the element at the specified index of the PluginCollection.
+
+ The zero-based index of the element to remove.
+
+ is less than zero.
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Returns an enumerator that can iterate through the PluginCollection.
+
+ An for the entire PluginCollection.
+
+
+
+ Adds the elements of another PluginCollection to the current PluginCollection.
+
+ The PluginCollection whose elements should be added to the end of the current PluginCollection.
+ The new of the PluginCollection.
+
+
+
+ Adds the elements of a array to the current PluginCollection.
+
+ The array whose elements should be added to the end of the PluginCollection.
+ The new of the PluginCollection.
+
+
+
+ Adds the elements of a collection to the current PluginCollection.
+
+ The collection whose elements should be added to the end of the PluginCollection.
+ The new of the PluginCollection.
+
+
+
+ Sets the capacity to the actual number of elements.
+
+
+
+
+ is less than zero.
+ -or-
+ is equal to or greater than .
+
+
+
+
+ is less than zero.
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Gets the number of elements actually contained in the PluginCollection.
+
+
+
+
+ Gets a value indicating whether access to the collection is synchronized (thread-safe).
+
+ false, because the backing type is an array, which is never thread-safe.
+
+
+
+ Gets an object that can be used to synchronize access to the collection.
+
+
+ An object that can be used to synchronize access to the collection.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ The at the specified index.
+
+ The zero-based index of the element to get or set.
+
+ is less than zero.
+ -or-
+ is equal to or greater than .
+
+
+
+
+ Gets a value indicating whether the collection has a fixed size.
+
+ true if the collection has a fixed size; otherwise, false. The default is false.
+
+
+
+ Gets a value indicating whether the IList is read-only.
+
+ true if the collection is read-only; otherwise, false. The default is false.
+
+
+
+ Gets or sets the number of elements the PluginCollection can contain.
+
+
+ The number of elements the PluginCollection can contain.
+
+
+
+
+ Supports type-safe iteration over a .
+
+
+
+
+
+ Advances the enumerator to the next element in the collection.
+
+
+ true if the enumerator was successfully advanced to the next element;
+ false if the enumerator has passed the end of the collection.
+
+
+ The collection was modified after the enumerator was created.
+
+
+
+
+ Sets the enumerator to its initial position, before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Type visible only to our subclasses
+ Used to access protected constructor
+
+
+
+
+
+ A value
+
+
+
+
+ Supports simple iteration over a .
+
+
+
+
+
+ Initializes a new instance of the Enumerator class.
+
+
+
+
+
+ Advances the enumerator to the next element in the collection.
+
+
+ true if the enumerator was successfully advanced to the next element;
+ false if the enumerator has passed the end of the collection.
+
+
+ The collection was modified after the enumerator was created.
+
+
+
+
+ Sets the enumerator to its initial position, before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+ The current element in the collection.
+
+
+
+
+
+
+
+ Map of repository plugins.
+
+
+
+ This class is a name keyed map of the plugins that are
+ attached to a repository.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+ The repository that the plugins should be attached to.
+
+
+ Initialize a new instance of the class with a
+ repository that the plugins should be attached to.
+
+
+
+
+
+ Adds a to the map.
+
+ The to add to the map.
+
+
+ The will be attached to the repository when added.
+
+
+ If there already exists a plugin with the same name
+ attached to the repository then the old plugin will
+ be and replaced with
+ the new plugin.
+
+
+
+
+
+ Removes a from the map.
+
+ The to remove from the map.
+
+
+ Remove a specific plugin from this map.
+
+
+
+
+
+ Gets a by name.
+
+ The name of the to lookup.
+
+ The from the map with the name specified, or
+ null if no plugin is found.
+
+
+
+ Lookup a plugin by name. If the plugin is not found null
+ will be returned.
+
+
+
+
+
+ Gets all possible plugins as a list of objects.
+
+ All possible plugins as a list of objects.
+
+
+ Get a collection of all the plugins defined in this map.
+
+
+
+
+
+ Base implementation of
+
+
+
+ Default abstract implementation of the
+ interface. This base class can be used by implementors
+ of the interface.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+ the name of the plugin
+
+ Initializes a new Plugin with the specified name.
+
+
+
+
+ Attaches this plugin to a .
+
+ The that this plugin should be attached to.
+
+
+ A plugin may only be attached to a single repository.
+
+
+ This method is called when the plugin is attached to the repository.
+
+
+
+
+
+ Is called when the plugin is to shutdown.
+
+
+
+ This method is called to notify the plugin that
+ it should stop operating and should detach from
+ the repository.
+
+
+
+
+
+ The name of this plugin.
+
+
+
+
+ The repository this plugin is attached to.
+
+
+
+
+ Gets or sets the name of the plugin.
+
+
+ The name of the plugin.
+
+
+
+ Plugins are stored in the
+ keyed by name. Each plugin instance attached to a
+ repository must be a unique name.
+
+
+ The name of the plugin must not change one the
+ plugin has been attached to a repository.
+
+
+
+
+
+ The repository for this plugin
+
+
+ The that this plugin is attached to.
+
+
+
+ Gets or sets the that this plugin is
+ attached to.
+
+
+
+
+
+ Plugin that listens for events from the
+
+
+
+ This plugin publishes an instance of
+ on a specified . This listens for logging events delivered from
+ a remote .
+
+
+ When an event is received it is relogged within the attached repository
+ as if it had been raised locally.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Default constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+ The property must be set.
+
+
+
+
+
+ Construct with sink Uri.
+
+ The name to publish the sink under in the remoting infrastructure.
+ See for more details.
+
+
+ Initializes a new instance of the class
+ with specified name.
+
+
+
+
+
+ Attaches this plugin to a .
+
+ The that this plugin should be attached to.
+
+
+ A plugin may only be attached to a single repository.
+
+
+ This method is called when the plugin is attached to the repository.
+
+
+
+
+
+ Is called when the plugin is to shutdown.
+
+
+
+ When the plugin is shutdown the remote logging
+ sink is disconnected.
+
+
+
+
+
+ The fully qualified type of the RemoteLoggingServerPlugin class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets or sets the URI of this sink.
+
+
+ The URI of this sink.
+
+
+
+ This is the name under which the object is marshaled.
+
+
+
+
+
+
+ Delivers objects to a remote sink.
+
+
+
+ Internal class used to listen for logging events
+ and deliver them to the local repository.
+
+
+
+
+
+ Constructor
+
+ The repository to log to.
+
+
+ Initializes a new instance of the for the
+ specified .
+
+
+
+
+
+ Logs the events to the repository.
+
+ The events to log.
+
+
+ The events passed are logged to the
+
+
+
+
+
+ Obtains a lifetime service object to control the lifetime
+ policy for this instance.
+
+ null to indicate that this instance should live forever.
+
+
+ Obtains a lifetime service object to control the lifetime
+ policy for this instance. This object should live forever
+ therefore this implementation returns null.
+
+
+
+
+
+ The underlying that events should
+ be logged to.
+
+
+
+
+ Default implementation of
+
+
+
+ This default implementation of the
+ interface is used to create the default subclass
+ of the object.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Interface abstracts creation of instances
+
+
+
+ This interface is used by the to
+ create new objects.
+
+
+ The method is called
+ to create a named .
+
+
+ Implement this interface to create new subclasses of .
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Create a new instance
+
+ The that will own the .
+ The name of the .
+ The instance for the specified name.
+
+
+ Create a new instance with the
+ specified name.
+
+
+ Called by the to create
+ new named instances.
+
+
+ If the is null then the root logger
+ must be returned.
+
+
+
+
+
+ Default constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Create a new instance
+
+ The that will own the .
+ The name of the .
+ The instance for the specified name.
+
+
+ Create a new instance with the
+ specified name.
+
+
+ Called by the to create
+ new named instances.
+
+
+ If the is null then the root logger
+ must be returned.
+
+
+
+
+
+ Default internal subclass of
+
+
+
+ This subclass has no additional behavior over the
+ class but does allow instances
+ to be created.
+
+
+
+
+
+ Implementation of used by
+
+
+
+ Internal class used to provide implementation of
+ interface. Applications should use to get
+ logger instances.
+
+
+ This is one of the central classes in the log4net implementation. One of the
+ distinctive features of log4net are hierarchical loggers and their
+ evaluation. The organizes the
+ instances into a rooted tree hierarchy.
+
+
+ The class is abstract. Only concrete subclasses of
+ can be created. The
+ is used to create instances of this type for the .
+
+
+ Nicko Cadell
+ Gert Driesen
+ Aspi Havewala
+ Douglas de la Torre
+
+
+
+ This constructor created a new instance and
+ sets its name.
+
+ The name of the .
+
+
+ This constructor is protected and designed to be used by
+ a subclass that is not abstract.
+
+
+ Loggers are constructed by
+ objects. See for the default
+ logger creator.
+
+
+
+
+
+ Add to the list of appenders of this
+ Logger instance.
+
+ An appender to add to this logger
+
+
+ Add to the list of appenders of this
+ Logger instance.
+
+
+ If is already in the list of
+ appenders, then it won't be added again.
+
+
+
+
+
+ Look for the appender named as name
+
+ The name of the appender to lookup
+ The appender with the name specified, or null.
+
+
+ Returns the named appender, or null if the appender is not found.
+
+
+
+
+
+ Remove all previously added appenders from this Logger instance.
+
+
+
+ Remove all previously added appenders from this Logger instance.
+
+
+ This is useful when re-reading configuration information.
+
+
+
+
+
+ Remove the appender passed as parameter form the list of appenders.
+
+ The appender to remove
+ The appender removed from the list
+
+
+ Remove the appender passed as parameter form the list of appenders.
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+
+ Remove the appender passed as parameter form the list of appenders.
+
+ The name of the appender to remove
+ The appender removed from the list
+
+
+ Remove the named appender passed as parameter form the list of appenders.
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+
+ This generic form is intended to be used by wrappers.
+
+ The declaring type of the method that is
+ the stack boundary into the logging system for this call.
+ The level of the message to be logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Generate a logging event for the specified using
+ the and .
+
+
+ This method must not throw any exception to the caller.
+
+
+
+
+
+ This is the most generic printing method that is intended to be used
+ by wrappers.
+
+ The event being logged.
+
+
+ Logs the specified logging event through this logger.
+
+
+ This method must not throw any exception to the caller.
+
+
+
+
+
+ Checks if this logger is enabled for a given passed as parameter.
+
+ The level to check.
+
+ true if this logger is enabled for level, otherwise false.
+
+
+
+ Test if this logger is going to log events of the specified .
+
+
+ This method must not throw any exception to the caller.
+
+
+
+
+
+ Deliver the to the attached appenders.
+
+ The event to log.
+
+
+ Call the appenders in the hierarchy starting at
+ this. If no appenders could be found, emit a
+ warning.
+
+
+ This method calls all the appenders inherited from the
+ hierarchy circumventing any evaluation of whether to log or not
+ to log the particular log request.
+
+
+
+
+
+ Closes all attached appenders implementing the interface.
+
+
+
+ Used to ensure that the appenders are correctly shutdown.
+
+
+
+
+
+ This is the most generic printing method. This generic form is intended to be used by wrappers
+
+ The level of the message to be logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Generate a logging event for the specified using
+ the .
+
+
+
+
+
+ Creates a new logging event and logs the event without further checks.
+
+ The declaring type of the method that is
+ the stack boundary into the logging system for this call.
+ The level of the message to be logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ Generates a logging event and delivers it to the attached
+ appenders.
+
+
+
+
+
+ Creates a new logging event and logs the event without further checks.
+
+ The event being logged.
+
+
+ Delivers the logging event to the attached appenders.
+
+
+
+
+
+ The fully qualified type of the Logger class.
+
+
+
+
+ The name of this logger.
+
+
+
+
+ The assigned level of this logger.
+
+
+
+ The level variable need not be
+ assigned a value in which case it is inherited
+ form the hierarchy.
+
+
+
+
+
+ The parent of this logger.
+
+
+
+ The parent of this logger.
+ All loggers have at least one ancestor which is the root logger.
+
+
+
+
+
+ Loggers need to know what Hierarchy they are in.
+
+
+
+ Loggers need to know what Hierarchy they are in.
+ The hierarchy that this logger is a member of is stored
+ here.
+
+
+
+
+
+ Helper implementation of the interface
+
+
+
+
+ Flag indicating if child loggers inherit their parents appenders
+
+
+
+ Additivity is set to true by default, that is children inherit
+ the appenders of their ancestors by default. If this variable is
+ set to false then the appenders found in the
+ ancestors of this logger are not used. However, the children
+ of this logger will inherit its appenders, unless the children
+ have their additivity flag set to false too. See
+ the user manual for more details.
+
+
+
+
+
+ Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl
+
+
+
+
+ Gets or sets the parent logger in the hierarchy.
+
+
+ The parent logger in the hierarchy.
+
+
+
+ Part of the Composite pattern that makes the hierarchy.
+ The hierarchy is parent linked rather than child linked.
+
+
+
+
+
+ Gets or sets a value indicating if child loggers inherit their parent's appenders.
+
+
+ true if child loggers inherit their parent's appenders.
+
+
+
+ Additivity is set to true by default, that is children inherit
+ the appenders of their ancestors by default. If this variable is
+ set to false then the appenders found in the
+ ancestors of this logger are not used. However, the children
+ of this logger will inherit its appenders, unless the children
+ have their additivity flag set to false too. See
+ the user manual for more details.
+
+
+
+
+
+ Gets the effective level for this logger.
+
+ The nearest level in the logger hierarchy.
+
+
+ Starting from this logger, searches the logger hierarchy for a
+ non-null level and returns it. Otherwise, returns the level of the
+ root logger.
+
+ The Logger class is designed so that this method executes as
+ quickly as possible.
+
+
+
+
+ Gets or sets the where this
+ Logger instance is attached to.
+
+ The hierarchy that this logger belongs to.
+
+
+ This logger must be attached to a single .
+
+
+
+
+
+ Gets or sets the assigned , if any, for this Logger.
+
+
+ The of this logger.
+
+
+
+ The assigned can be null.
+
+
+
+
+
+ Get the appenders contained in this logger as an
+ .
+
+ A collection of the appenders in this logger
+
+
+ Get the appenders contained in this logger as an
+ . If no appenders
+ can be found, then a is returned.
+
+
+
+
+
+ Gets the logger name.
+
+
+ The name of the logger.
+
+
+
+ The name of this logger
+
+
+
+
+
+ Gets the where this
+ Logger instance is attached to.
+
+
+ The that this logger belongs to.
+
+
+
+ Gets the where this
+ Logger instance is attached to.
+
+
+
+
+
+ Construct a new Logger
+
+ the name of the logger
+
+
+ Initializes a new instance of the class
+ with the specified name.
+
+
+
+
+
+ Delegate used to handle logger creation event notifications.
+
+ The in which the has been created.
+ The event args that hold the instance that has been created.
+
+
+ Delegate used to handle logger creation event notifications.
+
+
+
+
+
+ Provides data for the event.
+
+
+
+ A event is raised every time a
+ is created.
+
+
+
+
+
+ The created
+
+
+
+
+ Constructor
+
+ The that has been created.
+
+
+ Initializes a new instance of the event argument
+ class,with the specified .
+
+
+
+
+
+ Gets the that has been created.
+
+
+ The that has been created.
+
+
+
+ The that has been created.
+
+
+
+
+
+ Hierarchical organization of loggers
+
+
+
+ The casual user should not have to deal with this class
+ directly.
+
+
+ This class is specialized in retrieving loggers by name and
+ also maintaining the logger hierarchy. Implements the
+ interface.
+
+
+ The structure of the logger hierarchy is maintained by the
+ method. The hierarchy is such that children
+ link to their parent but parents do not have any references to their
+ children. Moreover, loggers can be instantiated in any order, in
+ particular descendant before ancestor.
+
+
+ In case a descendant is created before a particular ancestor,
+ then it creates a provision node for the ancestor and adds itself
+ to the provision node. Other descendants of the same ancestor add
+ themselves to the previously created provision node.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Base implementation of
+
+
+
+ Default abstract implementation of the interface.
+
+
+ Skeleton implementation of the interface.
+ All types can extend this type.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Interface implemented by logger repositories.
+
+
+
+ This interface is implemented by logger repositories. e.g.
+ .
+
+
+ This interface is used by the
+ to obtain interfaces.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Check if the named logger exists in the repository. If so return
+ its reference, otherwise returns null.
+
+ The name of the logger to lookup
+ The Logger object with the name specified
+
+
+ If the names logger exists it is returned, otherwise
+ null is returned.
+
+
+
+
+
+ Returns all the currently defined loggers as an Array.
+
+ All the defined loggers
+
+
+ Returns all the currently defined loggers as an Array.
+
+
+
+
+
+ Returns a named logger instance
+
+ The name of the logger to retrieve
+ The logger object with the name specified
+
+
+ Returns a named logger instance.
+
+
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated and
+ then linked with its existing ancestors as well as children.
+
+
+
+
+ Shutdown the repository
+
+
+ Shutting down a repository will safely close and remove
+ all appenders in all loggers including the root logger.
+
+
+ Some appenders need to be closed before the
+ application exists. Otherwise, pending logging events might be
+ lost.
+
+
+ The method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+
+
+
+ Reset the repositories configuration to a default state
+
+
+
+ Reset all values contained in this instance to their
+ default state.
+
+
+ Existing loggers are not removed. They are just reset.
+
+
+ This method should be used sparingly and with care as it will
+ block all logging until it is completed.
+
+
+
+
+
+ Log the through this repository.
+
+ the event to log
+
+
+ This method should not normally be used to log.
+ The interface should be used
+ for routine logging. This interface can be obtained
+ using the method.
+
+
+ The logEvent is delivered to the appropriate logger and
+ that logger is then responsible for logging the event.
+
+
+
+
+
+ Returns all the Appenders that are configured as an Array.
+
+ All the Appenders
+
+
+ Returns all the Appenders that are configured as an Array.
+
+
+
+
+
+ The name of the repository
+
+
+ The name of the repository
+
+
+
+ The name of the repository.
+
+
+
+
+
+ RendererMap accesses the object renderer map for this repository.
+
+
+ RendererMap accesses the object renderer map for this repository.
+
+
+
+ RendererMap accesses the object renderer map for this repository.
+
+
+ The RendererMap holds a mapping between types and
+ objects.
+
+
+
+
+
+ The plugin map for this repository.
+
+
+ The plugin map for this repository.
+
+
+
+ The plugin map holds the instances
+ that have been attached to this repository.
+
+
+
+
+
+ Get the level map for the Repository.
+
+
+
+ Get the level map for the Repository.
+
+
+ The level map defines the mappings between
+ level names and objects in
+ this repository.
+
+
+
+
+
+ The threshold for all events in this repository
+
+
+ The threshold for all events in this repository
+
+
+
+ The threshold for all events in this repository.
+
+
+
+
+
+ Flag indicates if this repository has been configured.
+
+
+ Flag indicates if this repository has been configured.
+
+
+
+ Flag indicates if this repository has been configured.
+
+
+
+
+
+ Collection of internal messages captured during the most
+ recent configuration process.
+
+
+
+
+ Event to notify that the repository has been shutdown.
+
+
+ Event to notify that the repository has been shutdown.
+
+
+
+ Event raised when the repository has been shutdown.
+
+
+
+
+
+ Event to notify that the repository has had its configuration reset.
+
+
+ Event to notify that the repository has had its configuration reset.
+
+
+
+ Event raised when the repository's configuration has been
+ reset to default.
+
+
+
+
+
+ Event to notify that the repository has had its configuration changed.
+
+
+ Event to notify that the repository has had its configuration changed.
+
+
+
+ Event raised when the repository's configuration has been changed.
+
+
+
+
+
+ Repository specific properties
+
+
+ Repository specific properties
+
+
+
+ These properties can be specified on a repository specific basis.
+
+
+
+
+
+ Default Constructor
+
+
+
+ Initializes the repository with default (empty) properties.
+
+
+
+
+
+ Construct the repository using specific properties
+
+ the properties to set for this repository
+
+
+ Initializes the repository with specified properties.
+
+
+
+
+
+ Test if logger exists
+
+ The name of the logger to lookup
+ The Logger object with the name specified
+
+
+ Check if the named logger exists in the repository. If so return
+ its reference, otherwise returns null.
+
+
+
+
+
+ Returns all the currently defined loggers in the repository
+
+ All the defined loggers
+
+
+ Returns all the currently defined loggers in the repository as an Array.
+
+
+
+
+
+ Return a new logger instance
+
+ The name of the logger to retrieve
+ The logger object with the name specified
+
+
+ Return a new logger instance.
+
+
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated and
+ then linked with its existing ancestors as well as children.
+
+
+
+
+
+ Shutdown the repository
+
+
+
+ Shutdown the repository. Can be overridden in a subclass.
+ This base class implementation notifies the
+ listeners and all attached plugins of the shutdown event.
+
+
+
+
+
+ Reset the repositories configuration to a default state
+
+
+
+ Reset all values contained in this instance to their
+ default state.
+
+
+ Existing loggers are not removed. They are just reset.
+
+
+ This method should be used sparingly and with care as it will
+ block all logging until it is completed.
+
+
+
+
+
+ Log the logEvent through this repository.
+
+ the event to log
+
+
+ This method should not normally be used to log.
+ The interface should be used
+ for routine logging. This interface can be obtained
+ using the method.
+
+
+ The logEvent is delivered to the appropriate logger and
+ that logger is then responsible for logging the event.
+
+
+
+
+
+ Returns all the Appenders that are configured as an Array.
+
+ All the Appenders
+
+
+ Returns all the Appenders that are configured as an Array.
+
+
+
+
+
+ The fully qualified type of the LoggerRepositorySkeleton class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Adds an object renderer for a specific class.
+
+ The type that will be rendered by the renderer supplied.
+ The object renderer used to render the object.
+
+
+ Adds an object renderer for a specific class.
+
+
+
+
+
+ Notify the registered listeners that the repository is shutting down
+
+ Empty EventArgs
+
+
+ Notify any listeners that this repository is shutting down.
+
+
+
+
+
+ Notify the registered listeners that the repository has had its configuration reset
+
+ Empty EventArgs
+
+
+ Notify any listeners that this repository's configuration has been reset.
+
+
+
+
+
+ Notify the registered listeners that the repository has had its configuration changed
+
+ Empty EventArgs
+
+
+ Notify any listeners that this repository's configuration has changed.
+
+
+
+
+
+ Raise a configuration changed event on this repository
+
+ EventArgs.Empty
+
+
+ Applications that programmatically change the configuration of the repository should
+ raise this event notification to notify listeners.
+
+
+
+
+
+ Flushes all configured Appenders that implement .
+
+ The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed,
+ or to wait indefinitely.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ The name of the repository
+
+
+ The string name of the repository
+
+
+
+ The name of this repository. The name is
+ used to store and lookup the repositories
+ stored by the .
+
+
+
+
+
+ The threshold for all events in this repository
+
+
+ The threshold for all events in this repository
+
+
+
+ The threshold for all events in this repository
+
+
+
+
+
+ RendererMap accesses the object renderer map for this repository.
+
+
+ RendererMap accesses the object renderer map for this repository.
+
+
+
+ RendererMap accesses the object renderer map for this repository.
+
+
+ The RendererMap holds a mapping between types and
+ objects.
+
+
+
+
+
+ The plugin map for this repository.
+
+
+ The plugin map for this repository.
+
+
+
+ The plugin map holds the instances
+ that have been attached to this repository.
+
+
+
+
+
+ Get the level map for the Repository.
+
+
+
+ Get the level map for the Repository.
+
+
+ The level map defines the mappings between
+ level names and objects in
+ this repository.
+
+
+
+
+
+ Flag indicates if this repository has been configured.
+
+
+ Flag indicates if this repository has been configured.
+
+
+
+ Flag indicates if this repository has been configured.
+
+
+
+
+
+ Contains a list of internal messages captures during the
+ last configuration.
+
+
+
+
+ Event to notify that the repository has been shutdown.
+
+
+ Event to notify that the repository has been shutdown.
+
+
+
+ Event raised when the repository has been shutdown.
+
+
+
+
+
+ Event to notify that the repository has had its configuration reset.
+
+
+ Event to notify that the repository has had its configuration reset.
+
+
+
+ Event raised when the repository's configuration has been
+ reset to default.
+
+
+
+
+
+ Event to notify that the repository has had its configuration changed.
+
+
+ Event to notify that the repository has had its configuration changed.
+
+
+
+ Event raised when the repository's configuration has been changed.
+
+
+
+
+
+ Repository specific properties
+
+
+ Repository specific properties
+
+
+ These properties can be specified on a repository specific basis
+
+
+
+
+ Basic Configurator interface for repositories
+
+
+
+ Interface used by basic configurator to configure a
+ with a default .
+
+
+ A should implement this interface to support
+ configuration by the .
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initialize the repository using the specified appender
+
+ the appender to use to log all logging events
+
+
+ Configure the repository to route all logging events to the
+ specified appender.
+
+
+
+
+
+ Initialize the repository using the specified appenders
+
+ the appenders to use to log all logging events
+
+
+ Configure the repository to route all logging events to the
+ specified appenders.
+
+
+
+
+
+ Configure repository using XML
+
+
+
+ Interface used by Xml configurator to configure a .
+
+
+ A should implement this interface to support
+ configuration by the .
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initialize the repository using the specified config
+
+ the element containing the root of the config
+
+
+ The schema for the XML configuration data is defined by
+ the implementation.
+
+
+
+
+
+ Default constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Construct with properties
+
+ The properties to pass to this repository.
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Construct with a logger factory
+
+ The factory to use to create new logger instances.
+
+
+ Initializes a new instance of the class with
+ the specified .
+
+
+
+
+
+ Construct with properties and a logger factory
+
+ The properties to pass to this repository.
+ The factory to use to create new logger instances.
+
+
+ Initializes a new instance of the class with
+ the specified .
+
+
+
+
+
+ Test if a logger exists
+
+ The name of the logger to lookup
+ The Logger object with the name specified
+
+
+ Check if the named logger exists in the hierarchy. If so return
+ its reference, otherwise returns null.
+
+
+
+
+
+ Returns all the currently defined loggers in the hierarchy as an Array
+
+ All the defined loggers
+
+
+ Returns all the currently defined loggers in the hierarchy as an Array.
+ The root logger is not included in the returned
+ enumeration.
+
+
+
+
+
+ Return a new logger instance named as the first parameter using
+ the default factory.
+
+
+
+ Return a new logger instance named as the first parameter using
+ the default factory.
+
+
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated and
+ then linked with its existing ancestors as well as children.
+
+
+ The name of the logger to retrieve
+ The logger object with the name specified
+
+
+
+ Shutting down a hierarchy will safely close and remove
+ all appenders in all loggers including the root logger.
+
+
+
+ Shutting down a hierarchy will safely close and remove
+ all appenders in all loggers including the root logger.
+
+
+ Some appenders need to be closed before the
+ application exists. Otherwise, pending logging events might be
+ lost.
+
+
+ The Shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+
+
+
+ Reset all values contained in this hierarchy instance to their default.
+
+
+
+ Reset all values contained in this hierarchy instance to their
+ default. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to null,
+ sets their additivity flag to true and sets the level
+ of the root logger to . Moreover,
+ message disabling is set its default "off" value.
+
+
+ Existing loggers are not removed. They are just reset.
+
+
+ This method should be used sparingly and with care as it will
+ block all logging until it is completed.
+
+
+
+
+
+ Log the logEvent through this hierarchy.
+
+ the event to log
+
+
+ This method should not normally be used to log.
+ The interface should be used
+ for routine logging. This interface can be obtained
+ using the method.
+
+
+ The logEvent is delivered to the appropriate logger and
+ that logger is then responsible for logging the event.
+
+
+
+
+
+ Returns all the Appenders that are currently configured
+
+ An array containing all the currently configured appenders
+
+
+ Returns all the instances that are currently configured.
+ All the loggers are searched for appenders. The appenders may also be containers
+ for appenders and these are also searched for additional loggers.
+
+
+ The list returned is unordered but does not contain duplicates.
+
+
+
+
+
+ Collect the appenders from an .
+ The appender may also be a container.
+
+
+
+
+
+
+ Collect the appenders from an container
+
+
+
+
+
+
+ Initialize the log4net system using the specified appender
+
+ the appender to use to log all logging events
+
+
+
+ Initialize the log4net system using the specified appenders
+
+ the appenders to use to log all logging events
+
+
+
+ Initialize the log4net system using the specified appenders
+
+ the appenders to use to log all logging events
+
+
+ This method provides the same functionality as the
+ method implemented
+ on this object, but it is protected and therefore can be called by subclasses.
+
+
+
+
+
+ Initialize the log4net system using the specified config
+
+ the element containing the root of the config
+
+
+
+ Initialize the log4net system using the specified config
+
+ the element containing the root of the config
+
+
+ This method provides the same functionality as the
+ method implemented
+ on this object, but it is protected and therefore can be called by subclasses.
+
+
+
+
+
+ Test if this hierarchy is disabled for the specified .
+
+ The level to check against.
+
+ true if the repository is disabled for the level argument, false otherwise.
+
+
+
+ If this hierarchy has not been configured then this method will
+ always return true.
+
+
+ This method will return true if this repository is
+ disabled for level object passed as parameter and
+ false otherwise.
+
+
+ See also the property.
+
+
+
+
+
+ Clear all logger definitions from the internal hashtable
+
+
+
+ This call will clear all logger definitions from the internal
+ hashtable. Invoking this method will irrevocably mess up the
+ logger hierarchy.
+
+
+ You should really know what you are doing before
+ invoking this method.
+
+
+
+
+
+ Return a new logger instance named as the first parameter using
+ .
+
+ The name of the logger to retrieve
+ The factory that will make the new logger instance
+ The logger object with the name specified
+
+
+ If a logger of that name already exists, then it will be
+ returned. Otherwise, a new logger will be instantiated by the
+ parameter and linked with its existing
+ ancestors as well as children.
+
+
+
+
+
+ Sends a logger creation event to all registered listeners
+
+ The newly created logger
+
+ Raises the logger creation event.
+
+
+
+
+ Updates all the parents of the specified logger
+
+ The logger to update the parents for
+
+
+ This method loops through all the potential parents of
+ . There 3 possible cases:
+
+
+
+ No entry for the potential parent of exists
+
+ We create a ProvisionNode for this potential
+ parent and insert in that provision node.
+
+
+
+ The entry is of type Logger for the potential parent.
+
+ The entry is 's nearest existing parent. We
+ update 's parent field with this entry. We also break from
+ he loop because updating our parent's parent is our parent's
+ responsibility.
+
+
+
+ The entry is of type ProvisionNode for this potential parent.
+
+ We add to the list of children for this
+ potential parent.
+
+
+
+
+
+
+
+ Replace a with a in the hierarchy.
+
+
+
+
+
+ We update the links for all the children that placed themselves
+ in the provision node 'pn'. The second argument 'log' is a
+ reference for the newly created Logger, parent of all the
+ children in 'pn'.
+
+
+ We loop on all the children 'c' in 'pn'.
+
+
+ If the child 'c' has been already linked to a child of
+ 'log' then there is no need to update 'c'.
+
+
+ Otherwise, we set log's parent field to c's parent and set
+ c's parent field to log.
+
+
+
+
+
+ Define or redefine a Level using the values in the argument
+
+ the level values
+
+
+ Define or redefine a Level using the values in the argument
+
+
+ Supports setting levels via the configuration file.
+
+
+
+
+
+ Set a Property using the values in the argument
+
+ the property value
+
+
+ Set a Property using the values in the argument.
+
+
+ Supports setting property values via the configuration file.
+
+
+
+
+
+ The fully qualified type of the Hierarchy class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Event used to notify that a logger has been created.
+
+
+
+ Event raised when a logger is created.
+
+
+
+
+
+ Has no appender warning been emitted
+
+
+
+ Flag to indicate if we have already issued a warning
+ about not having an appender warning.
+
+
+
+
+
+ Get the root of this hierarchy
+
+
+
+ Get the root of this hierarchy.
+
+
+
+
+
+ Gets or sets the default instance.
+
+ The default
+
+
+ The logger factory is used to create logger instances.
+
+
+
+
+
+ A class to hold the value, name and display name for a level
+
+
+
+ A class to hold the value, name and display name for a level
+
+
+
+
+
+ Override Object.ToString to return sensible debug info
+
+ string info about this object
+
+
+
+ Value of the level
+
+
+
+ If the value is not set (defaults to -1) the value will be looked
+ up for the current level with the same name.
+
+
+
+
+
+ Name of the level
+
+
+ The name of the level
+
+
+
+ The name of the level.
+
+
+
+
+
+ Display name for the level
+
+
+ The display name of the level
+
+
+
+ The display name of the level.
+
+
+
+
+
+ Used internally to accelerate hash table searches.
+
+
+
+ Internal class used to improve performance of
+ string keyed hashtables.
+
+
+ The hashcode of the string is cached for reuse.
+ The string is stored as an interned value.
+ When comparing two objects for equality
+ the reference equality of the interned strings is compared.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Construct key with string name
+
+
+
+ Initializes a new instance of the class
+ with the specified name.
+
+
+ Stores the hashcode of the string and interns
+ the string key to optimize comparisons.
+
+
+ The Compact Framework 1.0 the
+ method does not work. On the Compact Framework
+ the string keys are not interned nor are they
+ compared by reference.
+
+
+ The name of the logger.
+
+
+
+ Returns a hash code for the current instance.
+
+ A hash code for the current instance.
+
+
+ Returns the cached hashcode.
+
+
+
+
+
+ Determines whether two instances
+ are equal.
+
+ The to compare with the current .
+
+ true if the specified is equal to the current ; otherwise, false.
+
+
+
+ Compares the references of the interned strings.
+
+
+
+
+
+ Provision nodes are used where no logger instance has been specified
+
+
+
+ instances are used in the
+ when there is no specified
+ for that node.
+
+
+ A provision node holds a list of child loggers on behalf of
+ a logger that does not exist.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Create a new provision node with child node
+
+ A child logger to add to this node.
+
+
+ Initializes a new instance of the class
+ with the specified child logger.
+
+
+
+
+
+ The sits at the root of the logger hierarchy tree.
+
+
+
+ The is a regular except
+ that it provides several guarantees.
+
+
+ First, it cannot be assigned a null
+ level. Second, since the root logger cannot have a parent, the
+ property always returns the value of the
+ level field without walking the hierarchy.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Construct a
+
+ The level to assign to the root logger.
+
+
+ Initializes a new instance of the class with
+ the specified logging level.
+
+
+ The root logger names itself as "root". However, the root
+ logger cannot be retrieved by name.
+
+
+
+
+
+ The fully qualified type of the RootLogger class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets the assigned level value without walking the logger hierarchy.
+
+ The assigned level value without walking the logger hierarchy.
+
+
+ Because the root logger cannot have a parent and its level
+ must not be null this property just returns the
+ value of .
+
+
+
+
+
+ Gets or sets the assigned for the root logger.
+
+
+ The of the root logger.
+
+
+
+ Setting the level of the root logger to a null reference
+ may have catastrophic results. We prevent this here.
+
+
+
+
+
+ Initializes the log4net environment using an XML DOM.
+
+
+
+ Configures a using an XML DOM.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Construct the configurator for a hierarchy
+
+ The hierarchy to build.
+
+
+ Initializes a new instance of the class
+ with the specified .
+
+
+
+
+
+ Configure the hierarchy by parsing a DOM tree of XML elements.
+
+ The root element to parse.
+
+
+ Configure the hierarchy by parsing a DOM tree of XML elements.
+
+
+
+
+
+ Parse appenders by IDREF.
+
+ The appender ref element.
+ The instance of the appender that the ref refers to.
+
+
+ Parse an XML element that represents an appender and return
+ the appender.
+
+
+
+
+
+ Parses an appender element.
+
+ The appender element.
+ The appender instance or null when parsing failed.
+
+
+ Parse an XML element that represents an appender and return
+ the appender instance.
+
+
+
+
+
+ Parses a logger element.
+
+ The logger element.
+
+
+ Parse an XML element that represents a logger.
+
+
+
+
+
+ Parses the root logger element.
+
+ The root element.
+
+
+ Parse an XML element that represents the root logger.
+
+
+
+
+
+ Parses the children of a logger element.
+
+ The category element.
+ The logger instance.
+ Flag to indicate if the logger is the root logger.
+
+
+ Parse the child elements of a <logger> element.
+
+
+
+
+
+ Parses an object renderer.
+
+ The renderer element.
+
+
+ Parse an XML element that represents a renderer.
+
+
+
+
+
+ Parses a level element.
+
+ The level element.
+ The logger object to set the level on.
+ Flag to indicate if the logger is the root logger.
+
+
+ Parse an XML element that represents a level.
+
+
+
+
+
+ Sets a parameter on an object.
+
+ The parameter element.
+ The object to set the parameter on.
+
+ The parameter name must correspond to a writable property
+ on the object. The value of the parameter is a string,
+ therefore this function will attempt to set a string
+ property first. If unable to set a string property it
+ will inspect the property and its argument type. It will
+ attempt to call a static method called Parse on the
+ type of the property. This method will take a single
+ string argument and return a value that can be used to
+ set the property.
+
+
+
+
+ Test if an element has no attributes or child elements
+
+ the element to inspect
+ true if the element has any attributes or child elements, false otherwise
+
+
+
+ Test if a is constructible with Activator.CreateInstance.
+
+ the type to inspect
+ true if the type is creatable using a default constructor, false otherwise
+
+
+
+ Look for a method on the that matches the supplied
+
+ the type that has the method
+ the name of the method
+ the method info found
+
+
+ The method must be a public instance method on the .
+ The method must be named or "Add" followed by .
+ The method must take a single parameter.
+
+
+
+
+
+ Converts a string value to a target type.
+
+ The type of object to convert the string to.
+ The string value to use as the value of the object.
+
+
+ An object of type with value or
+ null when the conversion could not be performed.
+
+
+
+
+
+ Creates an object as specified in XML.
+
+ The XML element that contains the definition of the object.
+ The object type to use if not explicitly specified.
+ The type that the returned object must be or must inherit from.
+ The object or null
+
+
+ Parse an XML element and create an object instance based on the configuration
+ data.
+
+
+ The type of the instance may be specified in the XML. If not
+ specified then the is used
+ as the type. However the type is specified it must support the
+ type.
+
+
+
+
+
+ key: appenderName, value: appender.
+
+
+
+
+ The Hierarchy being configured.
+
+
+
+
+ The fully qualified type of the XmlHierarchyConfigurator class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Delegate used to handle logger repository shutdown event notifications
+
+ The that is shutting down.
+ Empty event args
+
+
+ Delegate used to handle logger repository shutdown event notifications.
+
+
+
+
+
+ Delegate used to handle logger repository configuration reset event notifications
+
+ The that has had its configuration reset.
+ Empty event args
+
+
+ Delegate used to handle logger repository configuration reset event notifications.
+
+
+
+
+
+ Delegate used to handle event notifications for logger repository configuration changes.
+
+ The that has had its configuration changed.
+ Empty event arguments.
+
+
+ Delegate used to handle event notifications for logger repository configuration changes.
+
+
+
+
+
+ Write the name of the current AppDomain to the output
+
+
+
+ Write the name of the current AppDomain to the output writer
+
+
+ Nicko Cadell
+
+
+
+ Write the name of the current AppDomain to the output
+
+ the writer to write to
+ null, state is not set
+
+
+ Writes name of the current AppDomain to the output .
+
+
+
+
+
+ AppSetting pattern converter
+
+
+
+ This pattern converter reads appSettings from the application configuration file.
+
+
+ If the is specified then that will be used to
+ lookup a single appSettings value. If no is specified
+ then all appSettings will be dumped as a list of key value pairs.
+
+
+ A typical use is to specify a base directory for log files, e.g.
+
+
+
+
+ ...
+
+
+ ]]>
+
+
+
+
+
+
+ Write the property value to the output
+
+ that will receive the formatted result.
+ null, state is not set
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property.
+
+
+ If the is set to null
+ then all the properties are written as key value pairs.
+
+
+
+
+
+ Write the current date to the output
+
+
+
+ Date pattern converter, uses a to format
+ the current date and time to the writer as a string.
+
+
+ The value of the determines
+ the formatting of the date. The following values are allowed:
+
+
+ Option value
+ Output
+
+
+ ISO8601
+
+ Uses the formatter.
+ Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern.
+
+
+
+ DATE
+
+ Uses the formatter.
+ Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459".
+
+
+
+ ABSOLUTE
+
+ Uses the formatter.
+ Formats using the "HH:mm:ss,fff" for example, "15:49:37,459".
+
+
+
+ other
+
+ Any other pattern string uses the formatter.
+ This formatter passes the pattern string to the
+ method.
+ For details on valid patterns see
+ DateTimeFormatInfo Class.
+
+
+
+
+
+ The date and time is in the local time zone and is rendered in that zone.
+ To output the time in Universal time see .
+
+
+ Nicko Cadell
+
+
+
+ The used to render the date to a string
+
+
+
+ The used to render the date to a string
+
+
+
+
+
+ Initialize the converter options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Write the current date to the output
+
+ that will receive the formatted result.
+ null, state is not set
+
+
+ Pass the current date and time to the
+ for it to render it to the writer.
+
+
+ The date and time passed is in the local time zone.
+
+
+
+
+
+ The fully qualified type of the DatePatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Write an folder path to the output
+
+
+
+ Write an special path environment folder path to the output writer.
+ The value of the determines
+ the name of the variable to output.
+ should be a value in the enumeration.
+
+
+ Ron Grabowski
+
+
+
+ Write an special path environment folder path to the output
+
+ the writer to write to
+ null, state is not set
+
+
+ Writes the special path environment folder path to the output .
+ The name of the special path environment folder path to output must be set
+ using the
+ property.
+
+
+
+
+
+ The fully qualified type of the EnvironmentFolderPathPatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Write an environment variable to the output
+
+
+
+ Write an environment variable to the output writer.
+ The value of the determines
+ the name of the variable to output.
+
+
+ Nicko Cadell
+
+
+
+ Write an environment variable to the output
+
+ the writer to write to
+ null, state is not set
+
+
+ Writes the environment variable to the output .
+ The name of the environment variable to output must be set
+ using the
+ property.
+
+
+
+
+
+ The fully qualified type of the EnvironmentPatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Write the current thread identity to the output
+
+
+
+ Write the current thread identity to the output writer
+
+
+ Nicko Cadell
+
+
+
+ Write the current thread identity to the output
+
+ the writer to write to
+ null, state is not set
+
+
+ Writes the current thread identity to the output .
+
+
+
+
+
+ The fully qualified type of the IdentityPatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Pattern converter for literal string instances in the pattern
+
+
+
+ Writes the literal string value specified in the
+ property to
+ the output.
+
+
+ Nicko Cadell
+
+
+
+ Set the next converter in the chain
+
+ The next pattern converter in the chain
+ The next pattern converter
+
+
+ Special case the building of the pattern converter chain
+ for instances. Two adjacent
+ literals in the pattern can be represented by a single combined
+ pattern converter. This implementation detects when a
+ is added to the chain
+ after this converter and combines its value with this converter's
+ literal value.
+
+
+
+
+
+ Write the literal to the output
+
+ the writer to write to
+ null, not set
+
+
+ Override the formatting behavior to ignore the FormattingInfo
+ because we have a literal instead.
+
+
+ Writes the value of
+ to the output .
+
+
+
+
+
+ Convert this pattern into the rendered message
+
+ that will receive the formatted result.
+ null, not set
+
+
+ This method is not used.
+
+
+
+
+
+ Writes a newline to the output
+
+
+
+ Writes the system dependent line terminator to the output.
+ This behavior can be overridden by setting the :
+
+
+
+ Option Value
+ Output
+
+
+ DOS
+ DOS or Windows line terminator "\r\n"
+
+
+ UNIX
+ UNIX line terminator "\n"
+
+
+
+ Nicko Cadell
+
+
+
+ Initialize the converter
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Write the current process ID to the output
+
+
+
+ Write the current process ID to the output writer
+
+
+ Nicko Cadell
+
+
+
+ Write the current process ID to the output
+
+ the writer to write to
+ null, state is not set
+
+
+ Write the current process ID to the output .
+
+
+
+
+
+ The fully qualified type of the ProcessIdPatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Property pattern converter
+
+
+
+ This pattern converter reads the thread and global properties.
+ The thread properties take priority over global properties.
+ See for details of the
+ thread properties. See for
+ details of the global properties.
+
+
+ If the is specified then that will be used to
+ lookup a single property. If no is specified
+ then all properties will be dumped as a list of key value pairs.
+
+
+ Nicko Cadell
+
+
+
+ Write the property value to the output
+
+ that will receive the formatted result.
+ null, state is not set
+
+
+ Writes out the value of a named property. The property name
+ should be set in the
+ property.
+
+
+ If the is set to null
+ then all the properties are written as key value pairs.
+
+
+
+
+
+ A Pattern converter that generates a string of random characters
+
+
+
+ The converter generates a string of random characters. By default
+ the string is length 4. This can be changed by setting the
+ to the string value of the length required.
+
+
+ The random characters in the string are limited to uppercase letters
+ and numbers only.
+
+
+ The random number generator used by this class is not cryptographically secure.
+
+
+ Nicko Cadell
+
+
+
+ Shared random number generator
+
+
+
+
+ Length of random string to generate. Default length 4.
+
+
+
+
+ Initialize the converter options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Write a randoim string to the output
+
+ the writer to write to
+ null, state is not set
+
+
+ Write a randoim string to the output .
+
+
+
+
+
+ The fully qualified type of the RandomStringPatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Write the current threads username to the output
+
+
+
+ Write the current threads username to the output writer
+
+
+ Nicko Cadell
+
+
+
+ Write the current threads username to the output
+
+ the writer to write to
+ null, state is not set
+
+
+ Write the current threads username to the output .
+
+
+
+
+
+ The fully qualified type of the UserNamePatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Write the UTC date time to the output
+
+
+
+ Date pattern converter, uses a to format
+ the current date and time in Universal time.
+
+
+ See the for details on the date pattern syntax.
+
+
+
+ Nicko Cadell
+
+
+
+ Write the current date and time to the output
+
+ that will receive the formatted result.
+ null, state is not set
+
+
+ Pass the current date and time to the
+ for it to render it to the writer.
+
+
+ The date is in Universal time when it is rendered.
+
+
+
+
+
+
+ The fully qualified type of the UtcDatePatternConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Type converter for Boolean.
+
+
+
+ Supports conversion from string to bool type.
+
+
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Can the source type be converted to the type supported by this object
+
+ the type to convert
+ true if the conversion is possible
+
+
+ Returns true if the is
+ the type.
+
+
+
+
+
+ Convert the source object to the type supported by this object
+
+ the object to convert
+ the converted object
+
+
+ Uses the method to convert the
+ argument to a .
+
+
+
+ The object cannot be converted to the
+ target type. To check for this condition use the
+ method.
+
+
+
+
+ Exception base type for conversion errors.
+
+
+
+ This type extends . It
+ does not add any new functionality but does differentiate the
+ type of exception being thrown.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Constructor
+
+ A message to include with the exception.
+
+
+ Initializes a new instance of the class
+ with the specified message.
+
+
+
+
+
+ Constructor
+
+ A message to include with the exception.
+ A nested exception to include.
+
+
+ Initializes a new instance of the class
+ with the specified message and inner exception.
+
+
+
+
+
+ Serialization constructor
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+
+
+ Initializes a new instance of the class
+ with serialized data.
+
+
+
+
+
+ Creates a new instance of the class.
+
+ The conversion destination type.
+ The value to convert.
+ An instance of the .
+
+
+ Creates a new instance of the class.
+
+
+
+
+
+ Creates a new instance of the class.
+
+ The conversion destination type.
+ The value to convert.
+ A nested exception to include.
+ An instance of the .
+
+
+ Creates a new instance of the class.
+
+
+
+
+
+ Register of type converters for specific types.
+
+
+
+ Maintains a registry of type converters used to convert between
+ types.
+
+
+ Use the and
+ methods to register new converters.
+ The and methods
+ lookup appropriate converters to use.
+
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Private constructor
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Static constructor.
+
+
+
+ This constructor defines the intrinsic type converters.
+
+
+
+
+
+ Adds a converter for a specific type.
+
+ The type being converted to.
+ The type converter to use to convert to the destination type.
+
+
+ Adds a converter instance for a specific type.
+
+
+
+
+
+ Adds a converter for a specific type.
+
+ The type being converted to.
+ The type of the type converter to use to convert to the destination type.
+
+
+ Adds a converter for a specific type.
+
+
+
+
+
+ Gets the type converter to use to convert values to the destination type.
+
+ The type being converted from.
+ The type being converted to.
+
+ The type converter instance to use for type conversions or null
+ if no type converter is found.
+
+
+
+ Gets the type converter to use to convert values to the destination type.
+
+
+
+
+
+ Gets the type converter to use to convert values to the destination type.
+
+ The type being converted to.
+
+ The type converter instance to use for type conversions or null
+ if no type converter is found.
+
+
+
+ Gets the type converter to use to convert values to the destination type.
+
+
+
+
+
+ Lookups the type converter to use as specified by the attributes on the
+ destination type.
+
+ The type being converted to.
+
+ The type converter instance to use for type conversions or null
+ if no type converter is found.
+
+
+
+
+ Creates the instance of the type converter.
+
+ The type of the type converter.
+
+ The type converter instance to use for type conversions or null
+ if no type converter is found.
+
+
+
+ The type specified for the type converter must implement
+ the or interfaces
+ and must have a public default (no argument) constructor.
+
+
+
+
+
+ The fully qualified type of the ConverterRegistry class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Mapping from to type converter.
+
+
+
+
+ Supports conversion from string to type.
+
+
+
+ Supports conversion from string to type.
+
+
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Can the source type be converted to the type supported by this object
+
+ the type to convert
+ true if the conversion is possible
+
+
+ Returns true if the is
+ the type.
+
+
+
+
+
+ Overrides the ConvertFrom method of IConvertFrom.
+
+ the object to convert to an encoding
+ the encoding
+
+
+ Uses the method to
+ convert the argument to an .
+
+
+
+ The object cannot be converted to the
+ target type. To check for this condition use the
+ method.
+
+
+
+
+ Interface supported by type converters
+
+
+
+ This interface supports conversion from a single type to arbitrary types.
+ See .
+
+
+ Nicko Cadell
+
+
+
+ Returns whether this converter can convert the object to the specified type
+
+ A Type that represents the type you want to convert to
+ true if the conversion is possible
+
+
+ Test if the type supported by this converter can be converted to the
+ .
+
+
+
+
+
+ Converts the given value object to the specified type, using the arguments
+
+ the object to convert
+ The Type to convert the value parameter to
+ the converted object
+
+
+ Converts the (which must be of the type supported
+ by this converter) to the specified..
+
+
+
+
+
+ Supports conversion from string to type.
+
+
+
+ Supports conversion from string to type.
+
+
+
+
+ Nicko Cadell
+
+
+
+ Can the source type be converted to the type supported by this object
+
+ the type to convert
+ true if the conversion is possible
+
+
+ Returns true if the is
+ the type.
+
+
+
+
+
+ Overrides the ConvertFrom method of IConvertFrom.
+
+ the object to convert to an IPAddress
+ the IPAddress
+
+
+ Uses the method to convert the
+ argument to an .
+ If that fails then the string is resolved as a DNS hostname.
+
+
+
+ The object cannot be converted to the
+ target type. To check for this condition use the
+ method.
+
+
+
+
+ Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)
+
+
+
+
+ Supports conversion from string to type.
+
+
+
+ Supports conversion from string to type.
+
+
+ The string is used as the
+ of the .
+
+
+
+
+
+ Nicko Cadell
+
+
+
+ Can the source type be converted to the type supported by this object
+
+ the type to convert
+ true if the conversion is possible
+
+
+ Returns true if the is
+ the type.
+
+
+
+
+
+ Overrides the ConvertFrom method of IConvertFrom.
+
+ the object to convert to a PatternLayout
+ the PatternLayout
+
+
+ Creates and returns a new using
+ the as the
+ .
+
+
+
+ The object cannot be converted to the
+ target type. To check for this condition use the
+ method.
+
+
+
+
+ Convert between string and
+
+
+
+ Supports conversion from string to type,
+ and from a type to a string.
+
+
+ The string is used as the
+ of the .
+
+
+
+
+
+ Nicko Cadell
+
+
+
+ Can the target type be converted to the type supported by this object
+
+ A that represents the type you want to convert to
+ true if the conversion is possible
+
+
+ Returns true if the is
+ assignable from a type.
+
+
+
+
+
+ Converts the given value object to the specified type, using the arguments
+
+ the object to convert
+ The Type to convert the value parameter to
+ the converted object
+
+
+ Uses the method to convert the
+ argument to a .
+
+
+
+ The object cannot be converted to the
+ . To check for this condition use the
+ method.
+
+
+
+
+ Can the source type be converted to the type supported by this object
+
+ the type to convert
+ true if the conversion is possible
+
+
+ Returns true if the is
+ the type.
+
+
+
+
+
+ Overrides the ConvertFrom method of IConvertFrom.
+
+ the object to convert to a PatternString
+ the PatternString
+
+
+ Creates and returns a new using
+ the as the
+ .
+
+
+
+ The object cannot be converted to the
+ target type. To check for this condition use the
+ method.
+
+
+
+
+ Supports conversion from string to type.
+
+
+
+ Supports conversion from string to type.
+
+
+
+
+
+ Nicko Cadell
+
+
+
+ Can the source type be converted to the type supported by this object
+
+ the type to convert
+ true if the conversion is possible
+
+
+ Returns true if the is
+ the type.
+
+
+
+
+
+ Overrides the ConvertFrom method of IConvertFrom.
+
+ the object to convert to a Type
+ the Type
+
+
+ Uses the method to convert the
+ argument to a .
+ Additional effort is made to locate partially specified types
+ by searching the loaded assemblies.
+
+
+
+ The object cannot be converted to the
+ target type. To check for this condition use the
+ method.
+
+
+
+
+ Attribute used to associate a type converter
+
+
+
+ Class and Interface level attribute that specifies a type converter
+ to use with the associated type.
+
+
+ To associate a type converter with a target type apply a
+ TypeConverterAttribute to the target type. Specify the
+ type of the type converter on the attribute.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ The string type name of the type converter
+
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ Create a new type converter attribute for the specified type name
+
+ The string type name of the type converter
+
+
+ The type specified must implement the
+ or the interfaces.
+
+
+
+
+
+ Create a new type converter attribute for the specified type
+
+ The type of the type converter
+
+
+ The type specified must implement the
+ or the interfaces.
+
+
+
+
+
+ The string type name of the type converter
+
+
+ The string type name of the type converter
+
+
+
+ The type specified must implement the
+ or the interfaces.
+
+
+
+
+
+ A straightforward implementation of the interface.
+
+
+
+ This is the default implementation of the
+ interface. Implementors of the interface
+ should aggregate an instance of this type.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Append on on all attached appenders.
+
+ The event being logged.
+ The number of appenders called.
+
+
+ Calls the method on all
+ attached appenders.
+
+
+
+
+
+ Append on on all attached appenders.
+
+ The array of events being logged.
+ The number of appenders called.
+
+
+ Calls the method on all
+ attached appenders.
+
+
+
+
+
+ Calls the DoAppende method on the with
+ the objects supplied.
+
+ The appender
+ The events
+
+
+ If the supports the
+ interface then the will be passed
+ through using that interface. Otherwise the
+ objects in the array will be passed one at a time.
+
+
+
+
+
+ Attaches an appender.
+
+ The appender to add.
+
+
+ If the appender is already in the list it won't be added again.
+
+
+
+
+
+ Gets an attached appender with the specified name.
+
+ The name of the appender to get.
+
+ The appender with the name specified, or null if no appender with the
+ specified name is found.
+
+
+
+ Lookup an attached appender by name.
+
+
+
+
+
+ Removes all attached appenders.
+
+
+
+ Removes and closes all attached appenders
+
+
+
+
+
+ Removes the specified appender from the list of attached appenders.
+
+ The appender to remove.
+ The appender removed from the list
+
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+
+ Removes the appender with the specified name from the list of appenders.
+
+ The name of the appender to remove.
+ The appender removed from the list
+
+
+ The appender removed is not closed.
+ If you are discarding the appender you must call
+ on the appender removed.
+
+
+
+
+
+ List of appenders
+
+
+
+
+ Array of appenders, used to cache the m_appenderList
+
+
+
+
+ The fully qualified type of the AppenderAttachedImpl class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets all attached appenders.
+
+
+ A collection of attached appenders, or null if there
+ are no attached appenders.
+
+
+
+ The read only collection of all currently attached appenders.
+
+
+
+
+
+ This class aggregates several PropertiesDictionary collections together.
+
+
+
+ Provides a dictionary style lookup over an ordered list of
+ collections.
+
+
+ Nicko Cadell
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Add a Properties Dictionary to this composite collection
+
+ the properties to add
+
+
+ Properties dictionaries added first take precedence over dictionaries added
+ later.
+
+
+
+
+
+ Flatten this composite collection into a single properties dictionary
+
+ the flattened dictionary
+
+
+ Reduces the collection of ordered dictionaries to a single dictionary
+ containing the resultant values for the keys.
+
+
+
+
+
+ Gets the value of a property
+
+
+ The value for the property with the specified key
+
+
+
+ Looks up the value for the specified.
+ The collections are searched
+ in the order in which they were added to this collection. The value
+ returned is the value held by the first collection that contains
+ the specified key.
+
+
+ If none of the collections contain the specified key then
+ null is returned.
+
+
+
+
+
+ Base class for Context Properties implementations
+
+
+
+ This class defines a basic property get set accessor
+
+
+ Nicko Cadell
+
+
+
+ Gets or sets the value of a property
+
+
+ The value for the property with the specified key
+
+
+
+ Gets or sets the value of a property
+
+
+
+
+
+ Wrapper class used to map converter names to converter types
+
+
+
+ Pattern converter info class used during configuration by custom
+ PatternString and PatternLayer converters.
+
+
+
+
+
+ default constructor
+
+
+
+
+
+
+
+
+
+
+ Gets or sets the name of the conversion pattern
+
+
+
+ The name of the pattern in the format string
+
+
+
+
+
+ Gets or sets the type of the converter
+
+
+
+ The value specified must extend the
+ type.
+
+
+
+
+
+
+
+
+
+
+ Subclass of that maintains a count of
+ the number of bytes written.
+
+
+
+ This writer counts the number of bytes written.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ that does not leak exceptions
+
+
+
+ does not throw exceptions when things go wrong.
+ Instead, it delegates error handling to its .
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Adapter that extends and forwards all
+ messages to an instance of .
+
+
+
+ Adapter that extends and forwards all
+ messages to an instance of .
+
+
+ Nicko Cadell
+
+
+
+ The writer to forward messages to
+
+
+
+
+ Create an instance of that forwards all
+ messages to a .
+
+ The to forward to
+
+
+ Create an instance of that forwards all
+ messages to a .
+
+
+
+
+
+ Closes the writer and releases any system resources associated with the writer
+
+
+
+
+
+
+
+
+ Dispose this writer
+
+ flag indicating if we are being disposed
+
+
+ Dispose this writer
+
+
+
+
+
+ Flushes any buffered output
+
+
+
+ Clears all buffers for the writer and causes any buffered data to be written
+ to the underlying device
+
+
+
+
+
+ Writes a character to the wrapped TextWriter
+
+ the value to write to the TextWriter
+
+
+ Writes a character to the wrapped TextWriter
+
+
+
+
+
+ Writes a character buffer to the wrapped TextWriter
+
+ the data buffer
+ the start index
+ the number of characters to write
+
+
+ Writes a character buffer to the wrapped TextWriter
+
+
+
+
+
+ Writes a string to the wrapped TextWriter
+
+ the value to write to the TextWriter
+
+
+ Writes a string to the wrapped TextWriter
+
+
+
+
+
+ Gets or sets the underlying .
+
+
+ The underlying .
+
+
+
+ Gets or sets the underlying .
+
+
+
+
+
+ The Encoding in which the output is written
+
+
+ The
+
+
+
+ The Encoding in which the output is written
+
+
+
+
+
+ Gets an object that controls formatting
+
+
+ The format provider
+
+
+
+ Gets an object that controls formatting
+
+
+
+
+
+ Gets or sets the line terminator string used by the TextWriter
+
+
+ The line terminator to use
+
+
+
+ Gets or sets the line terminator string used by the TextWriter
+
+
+
+
+
+ Constructor
+
+ the writer to actually write to
+ the error handler to report error to
+
+
+ Create a new QuietTextWriter using a writer and error handler
+
+
+
+
+
+ Writes a character to the underlying writer
+
+ the char to write
+
+
+ Writes a character to the underlying writer
+
+
+
+
+
+ Writes a buffer to the underlying writer
+
+ the buffer to write
+ the start index to write from
+ the number of characters to write
+
+
+ Writes a buffer to the underlying writer
+
+
+
+
+
+ Writes a string to the output.
+
+ The string data to write to the output.
+
+
+ Writes a string to the output.
+
+
+
+
+
+ Closes the underlying output writer.
+
+
+
+ Closes the underlying output writer.
+
+
+
+
+
+ The error handler instance to pass all errors to
+
+
+
+
+ Flag to indicate if this writer is closed
+
+
+
+
+ Gets or sets the error handler that all errors are passed to.
+
+
+ The error handler that all errors are passed to.
+
+
+
+ Gets or sets the error handler that all errors are passed to.
+
+
+
+
+
+ Gets a value indicating whether this writer is closed.
+
+
+ true if this writer is closed, otherwise false.
+
+
+
+ Gets a value indicating whether this writer is closed.
+
+
+
+
+
+ Constructor
+
+ The to actually write to.
+ The to report errors to.
+
+
+ Creates a new instance of the class
+ with the specified and .
+
+
+
+
+
+ Writes a character to the underlying writer and counts the number of bytes written.
+
+ the char to write
+
+
+ Overrides implementation of . Counts
+ the number of bytes written.
+
+
+
+
+
+ Writes a buffer to the underlying writer and counts the number of bytes written.
+
+ the buffer to write
+ the start index to write from
+ the number of characters to write
+
+
+ Overrides implementation of . Counts
+ the number of bytes written.
+
+
+
+
+
+ Writes a string to the output and counts the number of bytes written.
+
+ The string data to write to the output.
+
+
+ Overrides implementation of . Counts
+ the number of bytes written.
+
+
+
+
+
+ Total number of bytes written.
+
+
+
+
+ Gets or sets the total number of bytes written.
+
+
+ The total number of bytes written.
+
+
+
+ Gets or sets the total number of bytes written.
+
+
+
+
+
+ A fixed size rolling buffer of logging events.
+
+
+
+ An array backed fixed size leaky bucket.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+ The maximum number of logging events in the buffer.
+
+
+ Initializes a new instance of the class with
+ the specified maximum number of buffered logging events.
+
+
+ The argument is not a positive integer.
+
+
+
+ Appends a to the buffer.
+
+ The event to append to the buffer.
+ The event discarded from the buffer, if the buffer is full, otherwise null.
+
+
+ Append an event to the buffer. If the buffer still contains free space then
+ null is returned. If the buffer is full then an event will be dropped
+ to make space for the new event, the event dropped is returned.
+
+
+
+
+
+ Get and remove the oldest event in the buffer.
+
+ The oldest logging event in the buffer
+
+
+ Gets the oldest (first) logging event in the buffer and removes it
+ from the buffer.
+
+
+
+
+
+ Pops all the logging events from the buffer into an array.
+
+ An array of all the logging events in the buffer.
+
+
+ Get all the events in the buffer and clear the buffer.
+
+
+
+
+
+ Clear the buffer
+
+
+
+ Clear the buffer of all events. The events in the buffer are lost.
+
+
+
+
+
+ Gets the th oldest event currently in the buffer.
+
+ The th oldest event currently in the buffer.
+
+
+ If is outside the range 0 to the number of events
+ currently in the buffer, then null is returned.
+
+
+
+
+
+ Gets the maximum size of the buffer.
+
+ The maximum size of the buffer.
+
+
+ Gets the maximum size of the buffer
+
+
+
+
+
+ Gets the number of logging events in the buffer.
+
+ The number of logging events in the buffer.
+
+
+ This number is guaranteed to be in the range 0 to
+ (inclusive).
+
+
+
+
+
+ An always empty .
+
+
+
+ A singleton implementation of the
+ interface that always represents an empty collection.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Uses a private access modifier to enforce the singleton pattern.
+
+
+
+
+
+ Copies the elements of the to an
+ , starting at a particular Array index.
+
+ The one-dimensional
+ that is the destination of the elements copied from
+ . The Array must have zero-based
+ indexing.
+ The zero-based index in array at which
+ copying begins.
+
+
+ As the collection is empty no values are copied into the array.
+
+
+
+
+
+ Returns an enumerator that can iterate through a collection.
+
+
+ An that can be used to
+ iterate through the collection.
+
+
+
+ As the collection is empty a is returned.
+
+
+
+
+
+ The singleton instance of the empty collection.
+
+
+
+
+ Gets the singleton instance of the empty collection.
+
+ The singleton instance of the empty collection.
+
+
+ Gets the singleton instance of the empty collection.
+
+
+
+
+
+ Gets a value indicating if access to the is synchronized (thread-safe).
+
+
+ true if access to the is synchronized (thread-safe); otherwise, false.
+
+
+
+ For the this property is always true.
+
+
+
+
+
+ Gets the number of elements contained in the .
+
+
+ The number of elements contained in the .
+
+
+
+ As the collection is empty the is always 0.
+
+
+
+
+
+ Gets an object that can be used to synchronize access to the .
+
+
+ An object that can be used to synchronize access to the .
+
+
+
+ As the collection is empty and thread safe and synchronized this instance is also
+ the object.
+
+
+
+
+
+ An always empty .
+
+
+
+ A singleton implementation of the
+ interface that always represents an empty collection.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Uses a private access modifier to enforce the singleton pattern.
+
+
+
+
+
+ Copies the elements of the to an
+ , starting at a particular Array index.
+
+ The one-dimensional
+ that is the destination of the elements copied from
+ . The Array must have zero-based
+ indexing.
+ The zero-based index in array at which
+ copying begins.
+
+
+ As the collection is empty no values are copied into the array.
+
+
+
+
+
+ Returns an enumerator that can iterate through a collection.
+
+
+ An that can be used to
+ iterate through the collection.
+
+
+
+ As the collection is empty a is returned.
+
+
+
+
+
+ Adds an element with the provided key and value to the
+ .
+
+ The to use as the key of the element to add.
+ The to use as the value of the element to add.
+
+
+ As the collection is empty no new values can be added. A
+ is thrown if this method is called.
+
+
+ This dictionary is always empty and cannot be modified.
+
+
+
+ Removes all elements from the .
+
+
+
+ As the collection is empty no values can be removed. A
+ is thrown if this method is called.
+
+
+ This dictionary is always empty and cannot be modified.
+
+
+
+ Determines whether the contains an element
+ with the specified key.
+
+ The key to locate in the .
+ false
+
+
+ As the collection is empty the method always returns false.
+
+
+
+
+
+ Returns an enumerator that can iterate through a collection.
+
+
+ An that can be used to
+ iterate through the collection.
+
+
+
+ As the collection is empty a is returned.
+
+
+
+
+
+ Removes the element with the specified key from the .
+
+ The key of the element to remove.
+
+
+ As the collection is empty no values can be removed. A
+ is thrown if this method is called.
+
+
+ This dictionary is always empty and cannot be modified.
+
+
+
+ The singleton instance of the empty dictionary.
+
+
+
+
+ Gets the singleton instance of the .
+
+ The singleton instance of the .
+
+
+ Gets the singleton instance of the .
+
+
+
+
+
+ Gets a value indicating if access to the is synchronized (thread-safe).
+
+
+ true if access to the is synchronized (thread-safe); otherwise, false.
+
+
+
+ For the this property is always true.
+
+
+
+
+
+ Gets the number of elements contained in the
+
+
+ The number of elements contained in the .
+
+
+
+ As the collection is empty the is always 0.
+
+
+
+
+
+ Gets an object that can be used to synchronize access to the .
+
+
+ An object that can be used to synchronize access to the .
+
+
+
+ As the collection is empty and thread safe and synchronized this instance is also
+ the object.
+
+
+
+
+
+ Gets a value indicating whether the has a fixed size.
+
+ true
+
+
+ As the collection is empty always returns true.
+
+
+
+
+
+ Gets a value indicating whether the is read-only.
+
+ true
+
+
+ As the collection is empty always returns true.
+
+
+
+
+
+ Gets an containing the keys of the .
+
+ An containing the keys of the .
+
+
+ As the collection is empty a is returned.
+
+
+
+
+
+ Gets an containing the values of the .
+
+ An containing the values of the .
+
+
+ As the collection is empty a is returned.
+
+
+
+
+
+ Gets or sets the element with the specified key.
+
+ The key of the element to get or set.
+ null
+
+
+ As the collection is empty no values can be looked up or stored.
+ If the index getter is called then null is returned.
+ A is thrown if the setter is called.
+
+
+ This dictionary is always empty and cannot be modified.
+
+
+
+ Contain the information obtained when parsing formatting modifiers
+ in conversion modifiers.
+
+
+
+ Holds the formatting information extracted from the format string by
+ the . This is used by the
+ objects when rendering the output.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Defaut Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class
+ with the specified parameters.
+
+
+
+
+
+ Gets or sets the minimum value.
+
+
+ The minimum value.
+
+
+
+ Gets or sets the minimum value.
+
+
+
+
+
+ Gets or sets the maximum value.
+
+
+ The maximum value.
+
+
+
+ Gets or sets the maximum value.
+
+
+
+
+
+ Gets or sets a flag indicating whether left align is enabled
+ or not.
+
+
+ A flag indicating whether left align is enabled or not.
+
+
+
+ Gets or sets a flag indicating whether left align is enabled or not.
+
+
+
+
+
+ Implementation of Properties collection for the
+
+
+
+ This class implements a properties collection that is thread safe and supports both
+ storing properties and capturing a read only copy of the current propertied.
+
+
+ This class is optimized to the scenario where the properties are read frequently
+ and are modified infrequently.
+
+
+ Nicko Cadell
+
+
+
+ The read only copy of the properties.
+
+
+
+ This variable is declared volatile to prevent the compiler and JIT from
+ reordering reads and writes of this thread performed on different threads.
+
+
+
+
+
+ Lock object used to synchronize updates within this instance
+
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Remove a property from the global context
+
+ the key for the entry to remove
+
+
+ Removing an entry from the global context properties is relatively expensive compared
+ with reading a value.
+
+
+
+
+
+ Clear the global context properties
+
+
+
+
+ Get a readonly immutable copy of the properties
+
+ the current global context properties
+
+
+ This implementation is fast because the GlobalContextProperties class
+ stores a readonly copy of the properties.
+
+
+
+
+
+ Gets or sets the value of a property
+
+
+ The value for the property with the specified key
+
+
+
+ Reading the value for a key is faster than setting the value.
+ When the value is written a new read only copy of
+ the properties is created.
+
+
+
+
+
+ The static class ILogExtensions contains a set of widely used
+ methods that ease the interaction with the ILog interface implementations.
+
+
+
+ This class contains methods for logging at different levels and checks the
+ properties for determining if those logging levels are enabled in the current
+ configuration.
+
+
+ Simple example of logging messages
+
+ using log4net.Util;
+
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.InfoExt("Application Start");
+ log.DebugExt("This is a debug message");
+
+
+
+
+
+ The fully qualified type of the Logger class.
+
+
+
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+
+
+ This method first checks if this logger is INFO
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is INFO enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate .
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a message object with the level. //TODO
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The message object to log.
+
+
+ This method first checks if this logger is INFO
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is INFO enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+
+
+ This method first checks if this logger is INFO
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is INFO enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate .
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a message object with the level. //TODO
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The message object to log.
+
+
+ This method first checks if this logger is INFO
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is INFO enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+
+
+ This method first checks if this logger is WARN
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is WARN enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate .
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a message object with the level. //TODO
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The message object to log.
+
+
+ This method first checks if this logger is WARN
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is WARN enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+
+
+ This method first checks if this logger is ERROR
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is ERROR enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate .
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a message object with the level. //TODO
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The message object to log.
+
+
+ This method first checks if this logger is ERROR
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is ERROR enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+
+
+ This method first checks if this logger is FATAL
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is FATAL enabled, then it converts
+ the message object (retrieved by invocation of the provided callback) to a
+ string by invoking the appropriate .
+ It then proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The lambda expression that gets the object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+ Log a message object with the level. //TODO
+
+ Log a message object with the level.
+
+ The logger on which the message is logged.
+ The message object to log.
+
+
+ This method first checks if this logger is FATAL
+ enabled by reading the value property.
+ This check happens always and does not depend on the
+ implementation. If this logger is FATAL enabled, then it converts
+ the message object (passed as parameter) to a string by invoking the appropriate
+ . It then
+ proceeds to call all the registered appenders in this logger
+ and also higher in the hierarchy depending on the value of
+ the additivity flag.
+
+ WARNING Note that passing an
+ to this method will print the name of the
+ but no stack trace. To print a stack trace use the
+ form instead.
+
+
+
+
+
+
+
+ Log a message object with the level including
+ the stack trace of the passed
+ as a parameter.
+
+ The logger on which the message is logged.
+ The message object to log.
+ The exception to log, including its stack trace.
+
+
+ See the form for more detailed information.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ An that supplies culture-specific formatting information
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object array containing zero or more objects to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Logs a formatted message string with the level.
+
+ The logger on which the message is logged.
+ A String containing zero or more format items
+ An Object to format
+ An Object to format
+ An Object to format
+
+
+ The message is formatted using the String.Format method. See
+ for details of the syntax of the format string and the behavior
+ of the formatting.
+
+
+ This method does not take an object to include in the
+ log event. To pass an use one of the
+ methods instead.
+
+
+
+
+
+
+
+ Manages a mapping from levels to
+
+
+
+ Manages an ordered mapping from instances
+ to subclasses.
+
+
+ Nicko Cadell
+
+
+
+ Default constructor
+
+
+
+ Initialise a new instance of .
+
+
+
+
+
+ Add a to this mapping
+
+ the entry to add
+
+
+ If a has previously been added
+ for the same then that entry will be
+ overwritten.
+
+
+
+
+
+ Lookup the mapping for the specified level
+
+ the level to lookup
+ the for the level or null if no mapping found
+
+
+ Lookup the value for the specified level. Finds the nearest
+ mapping value for the level that is equal to or less than the
+ specified.
+
+
+ If no mapping could be found then null is returned.
+
+
+
+
+
+ Initialize options
+
+
+
+ Caches the sorted list of in an array
+
+
+
+
+
+ Implementation of Properties collection for the
+
+
+
+ Class implements a collection of properties that is specific to each thread.
+ The class is not synchronized as each thread has its own .
+
+
+ This class stores its properties in a slot on the named
+ log4net.Util.LogicalThreadContextProperties.
+
+
+ For .NET Standard 1.3 this class uses
+ System.Threading.AsyncLocal rather than .
+
+
+ The requires a link time
+ for the
+ .
+ If the calling code does not have this permission then this context will be disabled.
+ It will not store any property values set on it.
+
+
+ Nicko Cadell
+
+
+
+ Flag used to disable this context if we don't have permission to access the CallContext.
+
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Remove a property
+
+ the key for the entry to remove
+
+
+ Remove the value for the specified from the context.
+
+
+
+
+
+ Clear all the context properties
+
+
+
+ Clear all the context properties
+
+
+
+
+
+ Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread.
+
+ create the dictionary if it does not exist, otherwise return null if is does not exist
+ the properties for this thread
+
+
+ The collection returned is only to be used on the calling thread. If the
+ caller needs to share the collection between different threads then the
+ caller must clone the collection before doings so.
+
+
+
+
+
+ Gets the call context get data.
+
+ The peroperties dictionary stored in the call context
+
+ The method has a
+ security link demand, therfore we must put the method call in a seperate method
+ that we can wrap in an exception handler.
+
+
+
+
+ Sets the call context data.
+
+ The properties.
+
+ The method has a
+ security link demand, therfore we must put the method call in a seperate method
+ that we can wrap in an exception handler.
+
+
+
+
+ The fully qualified type of the LogicalThreadContextProperties class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets or sets the value of a property
+
+
+ The value for the property with the specified key
+
+
+
+ Get or set the property value for the specified.
+
+
+
+
+
+ Delegate type used for LogicalThreadContextStack's callbacks.
+
+
+
+
+ Implementation of Stack for the
+
+
+
+ Implementation of Stack for the
+
+
+ Nicko Cadell
+
+
+
+ The stack store.
+
+
+
+
+ The name of this within the
+ .
+
+
+
+
+ The callback used to let the register a
+ new instance of a .
+
+
+
+
+ Internal constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Clears all the contextual information held in this stack.
+
+
+
+ Clears all the contextual information held in this stack.
+ Only call this if you think that this thread is being reused after
+ a previous call execution which may not have completed correctly.
+ You do not need to use this method if you always guarantee to call
+ the method of the
+ returned from even in exceptional circumstances,
+ for example by using the using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message"))
+ syntax.
+
+
+
+
+
+ Removes the top context from this stack.
+
+ The message in the context that was removed from the top of this stack.
+
+
+ Remove the top context from this stack, and return
+ it to the caller. If this stack is empty then an
+ empty string (not ) is returned.
+
+
+
+
+
+ Pushes a new context message into this stack.
+
+ The new context message.
+
+ An that can be used to clean up the context stack.
+
+
+
+ Pushes a new context onto this stack. An
+ is returned that can be used to clean up this stack. This
+ can be easily combined with the using keyword to scope the
+ context.
+
+
+ Simple example of using the Push method with the using keyword.
+
+ using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message"))
+ {
+ log.Warn("This should have an ThreadContext Stack message");
+ }
+
+
+
+
+
+ Gets the current context information for this stack.
+
+ The current context information.
+
+
+
+ Gets the current context information for this stack.
+
+ Gets the current context information
+
+
+ Gets the current context information for this stack.
+
+
+
+
+
+ Get a portable version of this object
+
+ the portable instance of this object
+
+
+ Get a cross thread portable version of this object
+
+
+
+
+
+ The number of messages in the stack
+
+
+ The current number of messages in the stack
+
+
+
+ The current number of messages in the stack. That is
+ the number of times has been called
+ minus the number of times has been called.
+
+
+
+
+
+ Gets and sets the internal stack used by this
+
+ The internal storage stack
+
+
+ This property is provided only to support backward compatability
+ of the . Tytpically the internal stack should not
+ be modified.
+
+
+
+
+
+ Inner class used to represent a single context frame in the stack.
+
+
+
+ Inner class used to represent a single context frame in the stack.
+
+
+
+
+
+ Constructor
+
+ The message for this context.
+ The parent context in the chain.
+
+
+ Initializes a new instance of the class
+ with the specified message and parent context.
+
+
+
+
+
+ Get the message.
+
+ The message.
+
+
+ Get the message.
+
+
+
+
+
+ Gets the full text of the context down to the root level.
+
+
+ The full text of the context down to the root level.
+
+
+
+ Gets the full text of the context down to the root level.
+
+
+
+
+
+ Struct returned from the method.
+
+
+
+ This struct implements the and is designed to be used
+ with the pattern to remove the stack frame at the end of the scope.
+
+
+
+
+
+ The depth to trim the stack to when this instance is disposed
+
+
+
+
+ The outer LogicalThreadContextStack.
+
+
+
+
+ Constructor
+
+ The internal stack used by the ThreadContextStack.
+ The depth to return the stack to when this object is disposed.
+
+
+ Initializes a new instance of the class with
+ the specified stack and return depth.
+
+
+
+
+
+ Returns the stack to the correct depth.
+
+
+
+ Returns the stack to the correct depth.
+
+
+
+
+
+ Implementation of Stacks collection for the
+
+
+
+ Implementation of Stacks collection for the
+
+
+ Nicko Cadell
+
+
+
+ Internal constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ The fully qualified type of the ThreadContextStacks class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets the named thread context stack
+
+
+ The named stack
+
+
+
+ Gets the named thread context stack
+
+
+
+
+
+
+
+
+
+
+
+
+ Outputs log statements from within the log4net assembly.
+
+
+
+ Log4net components cannot make log4net logging calls. However, it is
+ sometimes useful for the user to learn about what log4net is
+ doing.
+
+
+ All log4net internal debug calls go to the standard output stream
+ whereas internal error messages are sent to the standard error output
+ stream.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Formats Prefix, Source, and Message in the same format as the value
+ sent to Console.Out and Trace.Write.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+ Static constructor that initializes logging by reading
+ settings from the application configuration file.
+
+
+
+ The log4net.Internal.Debug application setting
+ controls internal debugging. This setting should be set
+ to true to enable debugging.
+
+
+ The log4net.Internal.Quiet application setting
+ suppresses all internal logging including error messages.
+ This setting should be set to true to enable message
+ suppression.
+
+
+
+
+
+ Raises the LogReceived event when an internal messages is received.
+
+
+
+
+
+
+
+
+ Writes log4net internal debug messages to the
+ standard output stream.
+
+
+ The message to log.
+
+
+ All internal debug messages are prepended with
+ the string "log4net: ".
+
+
+
+
+
+ Writes log4net internal debug messages to the
+ standard output stream.
+
+ The Type that generated this message.
+ The message to log.
+ An exception to log.
+
+
+ All internal debug messages are prepended with
+ the string "log4net: ".
+
+
+
+
+
+ Writes log4net internal warning messages to the
+ standard error stream.
+
+ The Type that generated this message.
+ The message to log.
+
+
+ All internal warning messages are prepended with
+ the string "log4net:WARN ".
+
+
+
+
+
+ Writes log4net internal warning messages to the
+ standard error stream.
+
+ The Type that generated this message.
+ The message to log.
+ An exception to log.
+
+
+ All internal warning messages are prepended with
+ the string "log4net:WARN ".
+
+
+
+
+
+ Writes log4net internal error messages to the
+ standard error stream.
+
+ The Type that generated this message.
+ The message to log.
+
+
+ All internal error messages are prepended with
+ the string "log4net:ERROR ".
+
+
+
+
+
+ Writes log4net internal error messages to the
+ standard error stream.
+
+ The Type that generated this message.
+ The message to log.
+ An exception to log.
+
+
+ All internal debug messages are prepended with
+ the string "log4net:ERROR ".
+
+
+
+
+
+ Writes output to the standard output stream.
+
+ The message to log.
+
+
+ Writes to both Console.Out and System.Diagnostics.Trace.
+ Note that the System.Diagnostics.Trace is not supported
+ on the Compact Framework.
+
+
+ If the AppDomain is not configured with a config file then
+ the call to System.Diagnostics.Trace may fail. This is only
+ an issue if you are programmatically creating your own AppDomains.
+
+
+
+
+
+ Writes output to the standard error stream.
+
+ The message to log.
+
+
+ Writes to both Console.Error and System.Diagnostics.Trace.
+ Note that the System.Diagnostics.Trace is not supported
+ on the Compact Framework.
+
+
+ If the AppDomain is not configured with a config file then
+ the call to System.Diagnostics.Trace may fail. This is only
+ an issue if you are programmatically creating your own AppDomains.
+
+
+
+
+
+ Default debug level
+
+
+
+
+ In quietMode not even errors generate any output.
+
+
+
+
+ The event raised when an internal message has been received.
+
+
+
+
+ The Type that generated the internal message.
+
+
+
+
+ The DateTime stamp of when the internal message was received.
+
+
+
+
+ The UTC DateTime stamp of when the internal message was received.
+
+
+
+
+ A string indicating the severity of the internal message.
+
+
+ "log4net: ",
+ "log4net:ERROR ",
+ "log4net:WARN "
+
+
+
+
+ The internal log message.
+
+
+
+
+ The Exception related to the message.
+
+
+ Optional. Will be null if no Exception was passed.
+
+
+
+
+ Gets or sets a value indicating whether log4net internal logging
+ is enabled or disabled.
+
+
+ true if log4net internal logging is enabled, otherwise
+ false.
+
+
+
+ When set to true, internal debug level logging will be
+ displayed.
+
+
+ This value can be set by setting the application setting
+ log4net.Internal.Debug in the application configuration
+ file.
+
+
+ The default value is false, i.e. debugging is
+ disabled.
+
+
+
+
+ The following example enables internal debugging using the
+ application configuration file :
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets or sets a value indicating whether log4net should generate no output
+ from internal logging, not even for errors.
+
+
+ true if log4net should generate no output at all from internal
+ logging, otherwise false.
+
+
+
+ When set to true will cause internal logging at all levels to be
+ suppressed. This means that no warning or error reports will be logged.
+ This option overrides the setting and
+ disables all debug also.
+
+ This value can be set by setting the application setting
+ log4net.Internal.Quiet in the application configuration file.
+
+
+ The default value is false, i.e. internal logging is not
+ disabled.
+
+
+
+ The following example disables internal logging using the
+ application configuration file :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Test if LogLog.Debug is enabled for output.
+
+
+ true if Debug is enabled
+
+
+
+ Test if LogLog.Debug is enabled for output.
+
+
+
+
+
+ Test if LogLog.Warn is enabled for output.
+
+
+ true if Warn is enabled
+
+
+
+ Test if LogLog.Warn is enabled for output.
+
+
+
+
+
+ Test if LogLog.Error is enabled for output.
+
+
+ true if Error is enabled
+
+
+
+ Test if LogLog.Error is enabled for output.
+
+
+
+
+
+ Subscribes to the LogLog.LogReceived event and stores messages
+ to the supplied IList instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a native error code and message.
+
+
+
+ Represents a Win32 platform native error.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Create an instance of the class with the specified
+ error number and message.
+
+ The number of the native error.
+ The message of the native error.
+
+
+ Create an instance of the class with the specified
+ error number and message.
+
+
+
+
+
+ Create a new instance of the class for the last Windows error.
+
+
+ An instance of the class for the last windows error.
+
+
+
+ The message for the error number is lookup up using the
+ native Win32 FormatMessage function.
+
+
+
+
+
+ Create a new instance of the class.
+
+ the error number for the native error
+
+ An instance of the class for the specified
+ error number.
+
+
+
+ The message for the specified error number is lookup up using the
+ native Win32 FormatMessage function.
+
+
+
+
+
+ Retrieves the message corresponding with a Win32 message identifier.
+
+ Message identifier for the requested message.
+
+ The message corresponding with the specified message identifier.
+
+
+
+ The message will be searched for in system message-table resource(s)
+ using the native FormatMessage function.
+
+
+
+
+
+ Return error information string
+
+ error information string
+
+
+ Return error information string
+
+
+
+
+
+ Formats a message string.
+
+ Formatting options, and how to interpret the parameter.
+ Location of the message definition.
+ Message identifier for the requested message.
+ Language identifier for the requested message.
+ If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in .
+ If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer.
+ Pointer to an array of values that are used as insert values in the formatted message.
+
+
+ The function requires a message definition as input. The message definition can come from a
+ buffer passed into the function. It can come from a message table resource in an
+ already-loaded module. Or the caller can ask the function to search the system's message
+ table resource(s) for the message definition. The function finds the message definition
+ in a message table resource based on a message identifier and a language identifier.
+ The function copies the formatted message text to an output buffer, processing any embedded
+ insert sequences if requested.
+
+
+ To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message.
+
+
+
+
+ If the function succeeds, the return value is the number of TCHARs stored in the output
+ buffer, excluding the terminating null character.
+
+
+ If the function fails, the return value is zero. To get extended error information,
+ call .
+
+
+
+
+
+ Gets the number of the native error.
+
+
+ The number of the native error.
+
+
+
+ Gets the number of the native error.
+
+
+
+
+
+ Gets the message of the native error.
+
+
+ The message of the native error.
+
+
+
+
+ Gets the message of the native error.
+
+
+
+
+ An always empty .
+
+
+
+ A singleton implementation of the over a collection
+ that is empty and not modifiable.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Uses a private access modifier to enforce the singleton pattern.
+
+
+
+
+
+ Test if the enumerator can advance, if so advance.
+
+ false as the cannot advance.
+
+
+ As the enumerator is over an empty collection its
+ value cannot be moved over a valid position, therefore
+ will always return false.
+
+
+
+
+
+ Resets the enumerator back to the start.
+
+
+
+ As the enumerator is over an empty collection does nothing.
+
+
+
+
+
+ The singleton instance of the .
+
+
+
+
+ Gets the singleton instance of the .
+
+ The singleton instance of the .
+
+
+ Gets the singleton instance of the .
+
+
+
+
+
+ Gets the current object from the enumerator.
+
+
+ Throws an because the
+ never has a current value.
+
+
+
+ As the enumerator is over an empty collection its
+ value cannot be moved over a valid position, therefore
+ will throw an .
+
+
+ The collection is empty and
+ cannot be positioned over a valid location.
+
+
+
+ Gets the current key from the enumerator.
+
+
+ Throws an exception because the
+ never has a current value.
+
+
+
+ As the enumerator is over an empty collection its
+ value cannot be moved over a valid position, therefore
+ will throw an .
+
+
+ The collection is empty and
+ cannot be positioned over a valid location.
+
+
+
+ Gets the current value from the enumerator.
+
+ The current value from the enumerator.
+
+ Throws an because the
+ never has a current value.
+
+
+
+ As the enumerator is over an empty collection its
+ value cannot be moved over a valid position, therefore
+ will throw an .
+
+
+ The collection is empty and
+ cannot be positioned over a valid location.
+
+
+
+ Gets the current entry from the enumerator.
+
+
+ Throws an because the
+ never has a current entry.
+
+
+
+ As the enumerator is over an empty collection its
+ value cannot be moved over a valid position, therefore
+ will throw an .
+
+
+ The collection is empty and
+ cannot be positioned over a valid location.
+
+
+
+ An always empty .
+
+
+
+ A singleton implementation of the over a collection
+ that is empty and not modifiable.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Uses a private access modifier to enforce the singleton pattern.
+
+
+
+
+
+ Test if the enumerator can advance, if so advance
+
+ false as the cannot advance.
+
+
+ As the enumerator is over an empty collection its
+ value cannot be moved over a valid position, therefore
+ will always return false.
+
+
+
+
+
+ Resets the enumerator back to the start.
+
+
+
+ As the enumerator is over an empty collection does nothing.
+
+
+
+
+
+ The singleton instance of the .
+
+
+
+
+ Get the singleton instance of the .
+
+ The singleton instance of the .
+
+
+ Gets the singleton instance of the .
+
+
+
+
+
+ Gets the current object from the enumerator.
+
+
+ Throws an because the
+ never has a current value.
+
+
+
+ As the enumerator is over an empty collection its
+ value cannot be moved over a valid position, therefore
+ will throw an .
+
+
+ The collection is empty and
+ cannot be positioned over a valid location.
+
+
+
+ A SecurityContext used when a SecurityContext is not required
+
+
+
+ The is a no-op implementation of the
+ base class. It is used where a
+ is required but one has not been provided.
+
+
+ Nicko Cadell
+
+
+
+ Singleton instance of
+
+
+
+ Singleton instance of
+
+
+
+
+
+ Private constructor
+
+
+
+ Private constructor for singleton pattern.
+
+
+
+
+
+ Impersonate this SecurityContext
+
+ State supplied by the caller
+ null
+
+
+ No impersonation is done and null is always returned.
+
+
+
+
+
+ Implements log4net's default error handling policy which consists
+ of emitting a message for the first error in an appender and
+ ignoring all subsequent errors.
+
+
+
+ The error message is processed using the LogLog sub-system by default.
+
+
+ This policy aims at protecting an otherwise working application
+ from being flooded with error messages when logging fails.
+
+
+ Nicko Cadell
+ Gert Driesen
+ Ron Grabowski
+
+
+
+ Default Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Constructor
+
+ The prefix to use for each message.
+
+
+ Initializes a new instance of the class
+ with the specified prefix.
+
+
+
+
+
+ Reset the error handler back to its initial disabled state.
+
+
+
+
+ Log an Error
+
+ The error message.
+ The exception.
+ The internal error code.
+
+
+ Invokes if and only if this is the first error or the first error after has been called.
+
+
+
+
+
+ Log the very first error
+
+ The error message.
+ The exception.
+ The internal error code.
+
+
+ Sends the error information to 's Error method.
+
+
+
+
+
+ Log an Error
+
+ The error message.
+ The exception.
+
+
+ Invokes if and only if this is the first error or the first error after has been called.
+
+
+
+
+
+ Log an error
+
+ The error message.
+
+
+ Invokes if and only if this is the first error or the first error after has been called.
+
+
+
+
+
+ The UTC date the error was recorded.
+
+
+
+
+ Flag to indicate if it is the first error
+
+
+
+
+ The message recorded during the first error.
+
+
+
+
+ The exception recorded during the first error.
+
+
+
+
+ The error code recorded during the first error.
+
+
+
+
+ String to prefix each message with
+
+
+
+
+ The fully qualified type of the OnlyOnceErrorHandler class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Is error logging enabled
+
+
+
+ Is error logging enabled. Logging is only enabled for the
+ first error delivered to the .
+
+
+
+
+
+ The date the first error that trigged this error handler occurred, or if it has not been triggered.
+
+
+
+
+ The UTC date the first error that trigged this error handler occured, or if it has not been triggered.
+
+
+
+
+ The message from the first error that trigged this error handler.
+
+
+
+
+ The exception from the first error that trigged this error handler.
+
+
+ May be .
+
+
+
+
+ The error code from the first error that trigged this error handler.
+
+
+ Defaults to
+
+
+
+
+ A convenience class to convert property values to specific types.
+
+
+
+ Utility functions for converting types and parsing values.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+
+ Converts a string to a value.
+
+ String to convert.
+ The default value.
+ The value of .
+
+
+ If is "true", then true is returned.
+ If is "false", then false is returned.
+ Otherwise, is returned.
+
+
+
+
+
+ Parses a file size into a number.
+
+ String to parse.
+ The default value.
+ The value of .
+
+
+ Parses a file size of the form: number[KB|MB|GB] into a
+ long value. It is scaled with the appropriate multiplier.
+
+
+ is returned when
+ cannot be converted to a value.
+
+
+
+
+
+ Converts a string to an object.
+
+ The target type to convert to.
+ The string to convert to an object.
+
+ The object converted from a string or null when the
+ conversion failed.
+
+
+
+ Converts a string to an object. Uses the converter registry to try
+ to convert the string value into the specified target type.
+
+
+
+
+
+ Checks if there is an appropriate type conversion from the source type to the target type.
+
+ The type to convert from.
+ The type to convert to.
+ true if there is a conversion from the source type to the target type.
+
+ Checks if there is an appropriate type conversion from the source type to the target type.
+
+
+
+
+
+
+ Converts an object to the target type.
+
+ The object to convert to the target type.
+ The type to convert to.
+ The converted object.
+
+
+ Converts an object to the target type.
+
+
+
+
+
+ Instantiates an object given a class name.
+
+ The fully qualified class name of the object to instantiate.
+ The class to which the new object should belong.
+ The object to return in case of non-fulfillment.
+
+ An instance of the or
+ if the object could not be instantiated.
+
+
+
+ Checks that the is a subclass of
+ . If that test fails or the object could
+ not be instantiated, then is returned.
+
+
+
+
+
+ Performs variable substitution in string from the
+ values of keys found in .
+
+ The string on which variable substitution is performed.
+ The dictionary to use to lookup variables.
+ The result of the substitutions.
+
+
+ The variable substitution delimiters are ${ and }.
+
+
+ For example, if props contains key=value, then the call
+
+
+
+ string s = OptionConverter.SubstituteVariables("Value of key is ${key}.");
+
+
+
+ will set the variable s to "Value of key is value.".
+
+
+ If no value could be found for the specified key, then substitution
+ defaults to an empty string.
+
+
+ For example, if system properties contains no value for the key
+ "nonExistentKey", then the call
+
+
+
+ string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]");
+
+
+
+ will set s to "Value of nonExistentKey is []".
+
+
+ An Exception is thrown if contains a start
+ delimiter "${" which is not balanced by a stop delimiter "}".
+
+
+
+
+
+ Converts the string representation of the name or numeric value of one or
+ more enumerated constants to an equivalent enumerated object.
+
+ The type to convert to.
+ The enum string value.
+ If true, ignore case; otherwise, regard case.
+ An object of type whose value is represented by .
+
+
+
+ The fully qualified type of the OptionConverter class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Most of the work of the class
+ is delegated to the PatternParser class.
+
+
+
+ The PatternParser processes a pattern string and
+ returns a chain of objects.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Constructor
+
+ The pattern to parse.
+
+
+ Initializes a new instance of the class
+ with the specified pattern string.
+
+
+
+
+
+ Parses the pattern into a chain of pattern converters.
+
+ The head of a chain of pattern converters.
+
+
+ Parses the pattern into a chain of pattern converters.
+
+
+
+
+
+ Build the unified cache of converters from the static and instance maps
+
+ the list of all the converter names
+
+
+ Build the unified cache of converters from the static and instance maps
+
+
+
+
+
+ Internal method to parse the specified pattern to find specified matches
+
+ the pattern to parse
+ the converter names to match in the pattern
+
+
+ The matches param must be sorted such that longer strings come before shorter ones.
+
+
+
+
+
+ Process a parsed literal
+
+ the literal text
+
+
+
+ Process a parsed converter pattern
+
+ the name of the converter
+ the optional option for the converter
+ the formatting info for the converter
+
+
+
+ Resets the internal state of the parser and adds the specified pattern converter
+ to the chain.
+
+ The pattern converter to add.
+
+
+
+ The first pattern converter in the chain
+
+
+
+
+ the last pattern converter in the chain
+
+
+
+
+ The pattern
+
+
+
+
+ Internal map of converter identifiers to converter types
+
+
+
+ This map overrides the static s_globalRulesRegistry map.
+
+
+
+
+
+ The fully qualified type of the PatternParser class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Get the converter registry used by this parser
+
+
+ The converter registry used by this parser
+
+
+
+ Get the converter registry used by this parser
+
+
+
+
+
+ Sort strings by length
+
+
+
+ that orders strings by string length.
+ The longest strings are placed first
+
+
+
+
+
+ This class implements a patterned string.
+
+
+
+ This string has embedded patterns that are resolved and expanded
+ when the string is formatted.
+
+
+ This class functions similarly to the
+ in that it accepts a pattern and renders it to a string. Unlike the
+ however the PatternString
+ does not render the properties of a specific but
+ of the process in general.
+
+
+ The recognized conversion pattern names are:
+
+
+
+ Conversion Pattern Name
+ Effect
+
+
+ appdomain
+
+
+ Used to output the friendly name of the current AppDomain.
+
+
+
+
+ appsetting
+
+
+ Used to output the value of a specific appSetting key in the application
+ configuration file.
+
+
+
+
+ date
+
+
+ Used to output the current date and time in the local time zone.
+ To output the date in universal time use the %utcdate pattern.
+ The date conversion
+ specifier may be followed by a date format specifier enclosed
+ between braces. For example, %date{HH:mm:ss,fff} or
+ %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is
+ given then ISO8601 format is
+ assumed ().
+
+
+ The date format specifier admits the same syntax as the
+ time pattern string of the .
+
+
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ ,
+ and respectively
+ . For example,
+ %date{ISO8601} or %date{ABSOLUTE}.
+
+
+ These dedicated date formatters perform significantly
+ better than .
+
+
+
+
+ env
+
+
+ Used to output the a specific environment variable. The key to
+ lookup must be specified within braces and directly following the
+ pattern specifier, e.g. %env{COMPUTERNAME} would include the value
+ of the COMPUTERNAME environment variable.
+
+
+ The env pattern is not supported on the .NET Compact Framework.
+
+
+
+
+ identity
+
+
+ Used to output the user name for the currently active user
+ (Principal.Identity.Name).
+
+
+
+
+ newline
+
+
+ Outputs the platform dependent line separator character or
+ characters.
+
+
+ This conversion pattern name offers the same performance as using
+ non-portable line separator strings such as "\n", or "\r\n".
+ Thus, it is the preferred way of specifying a line separator.
+
+
+
+
+ processid
+
+
+ Used to output the system process ID for the current process.
+
+
+
+
+ property
+
+
+ Used to output a specific context property. The key to
+ lookup must be specified within braces and directly following the
+ pattern specifier, e.g. %property{user} would include the value
+ from the property that is keyed by the string 'user'. Each property value
+ that is to be included in the log must be specified separately.
+ Properties are stored in logging contexts. By default
+ the log4net:HostName property is set to the name of machine on
+ which the event was originally logged.
+
+
+ If no key is specified, e.g. %property then all the keys and their
+ values are printed in a comma separated list.
+
+
+ The properties of an event are combined from a number of different
+ contexts. These are listed below in the order in which they are searched.
+
+
+
+ the thread properties
+
+ The that are set on the current
+ thread. These properties are shared by all events logged on this thread.
+
+
+
+ the global properties
+
+ The that are set globally. These
+ properties are shared by all the threads in the AppDomain.
+
+
+
+
+
+
+ random
+
+
+ Used to output a random string of characters. The string is made up of
+ uppercase letters and numbers. By default the string is 4 characters long.
+ The length of the string can be specified within braces directly following the
+ pattern specifier, e.g. %random{8} would output an 8 character string.
+
+
+
+
+ username
+
+
+ Used to output the WindowsIdentity for the currently
+ active user.
+
+
+
+
+ utcdate
+
+
+ Used to output the date of the logging event in universal time.
+ The date conversion
+ specifier may be followed by a date format specifier enclosed
+ between braces. For example, %utcdate{HH:mm:ss,fff} or
+ %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is
+ given then ISO8601 format is
+ assumed ().
+
+
+ The date format specifier admits the same syntax as the
+ time pattern string of the .
+
+
+ For better results it is recommended to use the log4net date
+ formatters. These can be specified using one of the strings
+ "ABSOLUTE", "DATE" and "ISO8601" for specifying
+ ,
+ and respectively
+ . For example,
+ %utcdate{ISO8601} or %utcdate{ABSOLUTE}.
+
+
+ These dedicated date formatters perform significantly
+ better than .
+
+
+
+
+ %
+
+
+ The sequence %% outputs a single percent sign.
+
+
+
+
+
+ Additional pattern converters may be registered with a specific
+ instance using or
+ .
+
+
+ See the for details on the
+ format modifiers supported by the patterns.
+
+
+ Nicko Cadell
+
+
+
+ Internal map of converter identifiers to converter types.
+
+
+
+
+ the pattern
+
+
+
+
+ the head of the pattern converter chain
+
+
+
+
+ patterns defined on this PatternString only
+
+
+
+
+ Initialize the global registry
+
+
+
+
+ Default constructor
+
+
+
+ Initialize a new instance of
+
+
+
+
+
+ Constructs a PatternString
+
+ The pattern to use with this PatternString
+
+
+ Initialize a new instance of with the pattern specified.
+
+
+
+
+
+ Initialize object options
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+
+
+
+ Create the used to parse the pattern
+
+ the pattern to parse
+ The
+
+
+ Returns PatternParser used to parse the conversion string. Subclasses
+ may override this to return a subclass of PatternParser which recognize
+ custom conversion pattern name.
+
+
+
+
+
+ Produces a formatted string as specified by the conversion pattern.
+
+ The TextWriter to write the formatted event to
+
+
+ Format the pattern to the .
+
+
+
+
+
+ Format the pattern as a string
+
+ the pattern formatted as a string
+
+
+ Format the pattern to a string.
+
+
+
+
+
+ Add a converter to this PatternString
+
+ the converter info
+
+
+ This version of the method is used by the configurator.
+ Programmatic users should use the alternative method.
+
+
+
+
+
+ Add a converter to this PatternString
+
+ the name of the conversion pattern for this converter
+ the type of the converter
+
+
+ Add a converter to this PatternString
+
+
+
+
+
+ Gets or sets the pattern formatting string
+
+
+ The pattern formatting string
+
+
+
+ The ConversionPattern option. This is the string which
+ controls formatting and consists of a mix of literal content and
+ conversion specifiers.
+
+
+
+
+
+ String keyed object map.
+
+
+
+ While this collection is serializable only member
+ objects that are serializable will
+ be serialized along with this collection.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ String keyed object map that is read only.
+
+
+
+ This collection is readonly and cannot be modified.
+
+
+ While this collection is serializable only member
+ objects that are serializable will
+ be serialized along with this collection.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ The Hashtable used to store the properties data
+
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Copy Constructor
+
+ properties to copy
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Deserialization constructor
+
+ The that holds the serialized object data.
+ The that contains contextual information about the source or destination.
+
+
+ Initializes a new instance of the class
+ with serialized data.
+
+
+
+
+
+ Gets the key names.
+
+ An array of all the keys.
+
+
+ Gets the key names.
+
+
+
+
+
+ Test if the dictionary contains a specified key
+
+ the key to look for
+ true if the dictionary contains the specified key
+
+
+ Test if the dictionary contains a specified key
+
+
+
+
+
+ Serializes this object into the provided.
+
+ The to populate with data.
+ The destination for this serialization.
+
+
+ Serializes this object into the provided.
+
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+
+ See
+
+
+
+
+
+
+ Remove all properties from the properties collection
+
+
+
+
+ See
+
+
+
+
+
+
+ See
+
+
+
+
+
+
+ See
+
+
+
+
+ Gets or sets the value of the property with the specified key.
+
+
+ The value of the property with the specified key.
+
+ The key of the property to get or set.
+
+
+ The property value will only be serialized if it is serializable.
+ If it cannot be serialized it will be silently ignored if
+ a serialization operation is performed.
+
+
+
+
+
+ The hashtable used to store the properties
+
+
+ The internal collection used to store the properties
+
+
+
+ The hashtable used to store the properties
+
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ The number of properties in this collection
+
+
+
+
+ See
+
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Constructor
+
+ properties to copy
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Initializes a new instance of the class
+ with serialized data.
+
+ The that holds the serialized object data.
+ The that contains contextual information about the source or destination.
+
+
+ Because this class is sealed the serialization constructor is private.
+
+
+
+
+
+ Remove the entry with the specified key from this dictionary
+
+ the key for the entry to remove
+
+
+ Remove the entry with the specified key from this dictionary
+
+
+
+
+
+ See
+
+ an enumerator
+
+
+ Returns a over the contest of this collection.
+
+
+
+
+
+ See
+
+ the key to remove
+
+
+ Remove the entry with the specified key from this dictionary
+
+
+
+
+
+ See
+
+ the key to lookup in the collection
+ true if the collection contains the specified key
+
+
+ Test if this collection contains a specified key.
+
+
+
+
+
+ Remove all properties from the properties collection
+
+
+
+ Remove all properties from the properties collection
+
+
+
+
+
+ See
+
+ the key
+ the value to store for the key
+
+
+ Store a value for the specified .
+
+
+ Thrown if the is not a string
+
+
+
+ See
+
+
+
+
+
+
+ See
+
+
+
+
+ Gets or sets the value of the property with the specified key.
+
+
+ The value of the property with the specified key.
+
+ The key of the property to get or set.
+
+
+ The property value will only be serialized if it is serializable.
+ If it cannot be serialized it will be silently ignored if
+ a serialization operation is performed.
+
+
+
+
+
+ See
+
+
+ false
+
+
+
+ This collection is modifiable. This property always
+ returns false.
+
+
+
+
+
+ See
+
+
+ The value for the key specified.
+
+
+
+ Get or set a value for the specified .
+
+
+ Thrown if the is not a string
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ See
+
+
+
+
+ A class to hold the key and data for a property set in the config file
+
+
+
+ A class to hold the key and data for a property set in the config file
+
+
+
+
+
+ Override Object.ToString to return sensible debug info
+
+ string info about this object
+
+
+
+ Property Key
+
+
+ Property Key
+
+
+
+ Property Key.
+
+
+
+
+
+ Property Value
+
+
+ Property Value
+
+
+
+ Property Value.
+
+
+
+
+
+ A that ignores the message
+
+
+
+ This writer is used in special cases where it is necessary
+ to protect a writer from being closed by a client.
+
+
+ Nicko Cadell
+
+
+
+ Constructor
+
+ the writer to actually write to
+
+
+ Create a new ProtectCloseTextWriter using a writer
+
+
+
+
+
+ Attach this instance to a different underlying
+
+ the writer to attach to
+
+
+ Attach this instance to a different underlying
+
+
+
+
+
+ Does not close the underlying output writer.
+
+
+
+ Does not close the underlying output writer.
+ This method does nothing.
+
+
+
+
+
+ Defines a lock that supports single writers and multiple readers
+
+
+
+ ReaderWriterLock is used to synchronize access to a resource.
+ At any given time, it allows either concurrent read access for
+ multiple threads, or write access for a single thread. In a
+ situation where a resource is changed infrequently, a
+ ReaderWriterLock provides better throughput than a simple
+ one-at-a-time lock, such as .
+
+
+ If a platform does not support a System.Threading.ReaderWriterLock
+ implementation then all readers and writers are serialized. Therefore
+ the caller must not rely on multiple simultaneous readers.
+
+
+ Nicko Cadell
+
+
+
+ Constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Acquires a reader lock
+
+
+
+ blocks if a different thread has the writer
+ lock, or if at least one thread is waiting for the writer lock.
+
+
+
+
+
+ Decrements the lock count
+
+
+
+ decrements the lock count. When the count
+ reaches zero, the lock is released.
+
+
+
+
+
+ Acquires the writer lock
+
+
+
+ This method blocks if another thread has a reader lock or writer lock.
+
+
+
+
+
+ Decrements the lock count on the writer lock
+
+
+
+ ReleaseWriterLock decrements the writer lock count.
+ When the count reaches zero, the writer lock is released.
+
+
+
+
+
+ A that can be and reused
+
+
+
+ A that can be and reused.
+ This uses a single buffer for string operations.
+
+
+ Nicko Cadell
+
+
+
+ Create an instance of
+
+ the format provider to use
+
+
+ Create an instance of
+
+
+
+
+
+ Override Dispose to prevent closing of writer
+
+ flag
+
+
+ Override Dispose to prevent closing of writer
+
+
+
+
+
+ Reset this string writer so that it can be reused.
+
+ the maximum buffer capacity before it is trimmed
+ the default size to make the buffer
+
+
+ Reset this string writer so that it can be reused.
+ The internal buffers are cleared and reset.
+
+
+
+
+
+ Utility class for system specific information.
+
+
+
+ Utility class of static methods for system specific information.
+
+
+ Nicko Cadell
+ Gert Driesen
+ Alexey Solofnenko
+
+
+
+ Private constructor to prevent instances.
+
+
+
+ Only static methods are exposed from this type.
+
+
+
+
+
+ Initialize default values for private static fields.
+
+
+
+ Only static methods are exposed from this type.
+
+
+
+
+
+ Gets the assembly location path for the specified assembly.
+
+ The assembly to get the location for.
+ The location of the assembly.
+
+
+ This method does not guarantee to return the correct path
+ to the assembly. If only tries to give an indication as to
+ where the assembly was loaded from.
+
+
+
+
+
+ Gets the fully qualified name of the , including
+ the name of the assembly from which the was
+ loaded.
+
+ The to get the fully qualified name for.
+ The fully qualified name for the .
+
+
+ This is equivalent to the Type.AssemblyQualifiedName property,
+ but this method works on the .NET Compact Framework 1.0 as well as
+ the full .NET runtime.
+
+
+
+
+
+ Gets the short name of the .
+
+ The to get the name for.
+ The short name of the .
+
+
+ The short name of the assembly is the
+ without the version, culture, or public key. i.e. it is just the
+ assembly's file name without the extension.
+
+
+ Use this rather than Assembly.GetName().Name because that
+ is not available on the Compact Framework.
+
+
+ Because of a FileIOPermission security demand we cannot do
+ the obvious Assembly.GetName().Name. We are allowed to get
+ the of the assembly so we
+ start from there and strip out just the assembly name.
+
+
+
+
+
+ Gets the file name portion of the , including the extension.
+
+ The to get the file name for.
+ The file name of the assembly.
+
+
+ Gets the file name portion of the , including the extension.
+
+
+
+
+
+ Loads the type specified in the type string.
+
+ A sibling type to use to load the type.
+ The name of the type to load.
+ Flag set to true to throw an exception if the type cannot be loaded.
+ true to ignore the case of the type name; otherwise, false
+ The type loaded or null if it could not be loaded.
+
+
+ If the type name is fully qualified, i.e. if contains an assembly name in
+ the type name, the type will be loaded from the system using
+ .
+
+
+ If the type name is not fully qualified, it will be loaded from the assembly
+ containing the specified relative type. If the type is not found in the assembly
+ then all the loaded assemblies will be searched for the type.
+
+
+
+
+
+ Loads the type specified in the type string.
+
+ The name of the type to load.
+ Flag set to true to throw an exception if the type cannot be loaded.
+ true to ignore the case of the type name; otherwise, false
+ The type loaded or null if it could not be loaded.
+
+
+ If the type name is fully qualified, i.e. if contains an assembly name in
+ the type name, the type will be loaded from the system using
+ .
+
+
+ If the type name is not fully qualified it will be loaded from the
+ assembly that is directly calling this method. If the type is not found
+ in the assembly then all the loaded assemblies will be searched for the type.
+
+
+
+
+
+ Loads the type specified in the type string.
+
+ An assembly to load the type from.
+ The name of the type to load.
+ Flag set to true to throw an exception if the type cannot be loaded.
+ true to ignore the case of the type name; otherwise, false
+ The type loaded or null if it could not be loaded.
+
+
+ If the type name is fully qualified, i.e. if contains an assembly name in
+ the type name, the type will be loaded from the system using
+ .
+
+
+ If the type name is not fully qualified it will be loaded from the specified
+ assembly. If the type is not found in the assembly then all the loaded assemblies
+ will be searched for the type.
+
+
+
+
+
+ Generate a new guid
+
+ A new Guid
+
+
+ Generate a new guid
+
+
+
+
+
+ Create an
+
+ The name of the parameter that caused the exception
+ The value of the argument that causes this exception
+ The message that describes the error
+ the ArgumentOutOfRangeException object
+
+
+ Create a new instance of the class
+ with a specified error message, the parameter name, and the value
+ of the argument.
+
+
+ The Compact Framework does not support the 3 parameter constructor for the
+ type. This method provides an
+ implementation that works for all platforms.
+
+
+
+
+
+ Parse a string into an value
+
+ the string to parse
+ out param where the parsed value is placed
+ true if the string was able to be parsed into an integer
+
+
+ Attempts to parse the string into an integer. If the string cannot
+ be parsed then this method returns false. The method does not throw an exception.
+
+
+
+
+
+ Parse a string into an value
+
+ the string to parse
+ out param where the parsed value is placed
+ true if the string was able to be parsed into an integer
+
+
+ Attempts to parse the string into an integer. If the string cannot
+ be parsed then this method returns false. The method does not throw an exception.
+
+
+
+
+
+ Parse a string into an value
+
+ the string to parse
+ out param where the parsed value is placed
+ true if the string was able to be parsed into an integer
+
+
+ Attempts to parse the string into an integer. If the string cannot
+ be parsed then this method returns false. The method does not throw an exception.
+
+
+
+
+
+ Lookup an application setting
+
+ the application settings key to lookup
+ the value for the key, or null
+
+
+ Configuration APIs are not supported under the Compact Framework
+
+
+
+
+
+ Convert a path into a fully qualified local file path.
+
+ The path to convert.
+ The fully qualified path.
+
+
+ Converts the path specified to a fully
+ qualified path. If the path is relative it is
+ taken as relative from the application base
+ directory.
+
+
+ The path specified must be a local file path, a URI is not supported.
+
+
+
+
+
+ Creates a new case-insensitive instance of the class with the default initial capacity.
+
+ A new case-insensitive instance of the class with the default initial capacity
+
+
+ The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer.
+
+
+
+
+
+ Tests two strings for equality, the ignoring case.
+
+
+ If the platform permits, culture information is ignored completely (ordinal comparison).
+ The aim of this method is to provide a fast comparison that deals with null and ignores different casing.
+ It is not supposed to deal with various, culture-specific habits.
+ Use it to compare against pure ASCII constants, like keywords etc.
+
+ The one string.
+ The other string.
+ true if the strings are equal, false otherwise.
+
+
+
+ Gets an empty array of types.
+
+
+
+ The Type.EmptyTypes field is not available on
+ the .NET Compact Framework 1.0.
+
+
+
+
+
+ The fully qualified type of the SystemInfo class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Cache the host name for the current machine
+
+
+
+
+ Cache the application friendly name
+
+
+
+
+ Text to output when a null is encountered.
+
+
+
+
+ Text to output when an unsupported feature is requested.
+
+
+
+
+ Start time for the current process.
+
+
+
+
+ Gets the system dependent line terminator.
+
+
+ The system dependent line terminator.
+
+
+
+ Gets the system dependent line terminator.
+
+
+
+
+
+ Gets the base directory for this .
+
+ The base directory path for the current .
+
+
+ Gets the base directory for this .
+
+
+ The value returned may be either a local file path or a URI.
+
+
+
+
+
+ Gets the path to the configuration file for the current .
+
+ The path to the configuration file for the current .
+
+
+ The .NET Compact Framework 1.0 does not have a concept of a configuration
+ file. For this runtime, we use the entry assembly location as the root for
+ the configuration file name.
+
+
+ The value returned may be either a local file path or a URI.
+
+
+
+
+
+ Gets the path to the file that first executed in the current .
+
+ The path to the entry assembly.
+
+
+ Gets the path to the file that first executed in the current .
+
+
+
+
+
+ Gets the ID of the current thread.
+
+ The ID of the current thread.
+
+
+ On the .NET framework, the AppDomain.GetCurrentThreadId method
+ is used to obtain the thread ID for the current thread. This is the
+ operating system ID for the thread.
+
+
+ On the .NET Compact Framework 1.0 it is not possible to get the
+ operating system thread ID for the current thread. The native method
+ GetCurrentThreadId is implemented inline in a header file
+ and cannot be called.
+
+
+ On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this
+ gives a stable id unrelated to the operating system thread ID which may
+ change if the runtime is using fibers.
+
+
+
+
+
+ Get the host name or machine name for the current machine
+
+
+ The hostname or machine name
+
+
+
+ Get the host name or machine name for the current machine
+
+
+ The host name () or
+ the machine name (Environment.MachineName) for
+ the current machine, or if neither of these are available
+ then NOT AVAILABLE is returned.
+
+
+
+
+
+ Get this application's friendly name
+
+
+ The friendly name of this application as a string
+
+
+
+ If available the name of the application is retrieved from
+ the AppDomain using AppDomain.CurrentDomain.FriendlyName.
+
+
+ Otherwise the file name of the entry assembly is used.
+
+
+
+
+
+ Get the start time for the current process.
+
+
+
+ This is the time at which the log4net library was loaded into the
+ AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime
+ this is not the start time for the current process.
+
+
+ The log4net library should be loaded by an application early during its
+ startup, therefore this start time should be a good approximation for
+ the actual start time.
+
+
+ Note that AppDomains may be loaded and unloaded within the
+ same process without the process terminating, however this start time
+ will be set per AppDomain.
+
+
+
+
+
+ Get the UTC start time for the current process.
+
+
+
+ This is the UTC time at which the log4net library was loaded into the
+ AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime
+ this is not the start time for the current process.
+
+
+ The log4net library should be loaded by an application early during its
+ startup, therefore this start time should be a good approximation for
+ the actual start time.
+
+
+ Note that AppDomains may be loaded and unloaded within the
+ same process without the process terminating, however this start time
+ will be set per AppDomain.
+
+
+
+
+
+ Text to output when a null is encountered.
+
+
+
+ Use this value to indicate a null has been encountered while
+ outputting a string representation of an item.
+
+
+ The default value is (null). This value can be overridden by specifying
+ a value for the log4net.NullText appSetting in the application's
+ .config file.
+
+
+
+
+
+ Text to output when an unsupported feature is requested.
+
+
+
+ Use this value when an unsupported feature is requested.
+
+
+ The default value is NOT AVAILABLE. This value can be overridden by specifying
+ a value for the log4net.NotAvailableText appSetting in the application's
+ .config file.
+
+
+
+
+
+ Utility class that represents a format string.
+
+
+
+ Utility class that represents a format string.
+
+
+ Nicko Cadell
+
+
+
+ Initialise the
+
+ An that supplies culture-specific formatting information.
+ A containing zero or more format items.
+ An array containing zero or more objects to format.
+
+
+
+ Format the string and arguments
+
+ the formatted string
+
+
+
+ Replaces the format item in a specified with the text equivalent
+ of the value of a corresponding instance in a specified array.
+ A specified parameter supplies culture-specific formatting information.
+
+ An that supplies culture-specific formatting information.
+ A containing zero or more format items.
+ An array containing zero or more objects to format.
+
+ A copy of format in which the format items have been replaced by the
+ equivalent of the corresponding instances of in args.
+
+
+
+ This method does not throw exceptions. If an exception thrown while formatting the result the
+ exception and arguments are returned in the result string.
+
+
+
+
+
+ Process an error during StringFormat
+
+
+
+
+ Dump the contents of an array into a string builder
+
+
+
+
+ Dump an object to a string
+
+
+
+
+ The fully qualified type of the SystemStringFormat class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Implementation of Properties collection for the
+
+
+
+ Class implements a collection of properties that is specific to each thread.
+ The class is not synchronized as each thread has its own .
+
+
+ Nicko Cadell
+
+
+
+ Each thread will automatically have its instance.
+
+
+
+
+ Internal constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Remove a property
+
+ the key for the entry to remove
+
+
+ Remove a property
+
+
+
+
+
+ Get the keys stored in the properties.
+
+
+ Gets the keys stored in the properties.
+
+ a set of the defined keys
+
+
+
+ Clear all properties
+
+
+
+ Clear all properties
+
+
+
+
+
+ Get the PropertiesDictionary for this thread.
+
+ create the dictionary if it does not exist, otherwise return null if does not exist
+ the properties for this thread
+
+
+ The collection returned is only to be used on the calling thread. If the
+ caller needs to share the collection between different threads then the
+ caller must clone the collection before doing so.
+
+
+
+
+
+ Gets or sets the value of a property
+
+
+ The value for the property with the specified key
+
+
+
+ Gets or sets the value of a property
+
+
+
+
+
+ Implementation of Stack for the
+
+
+
+ Implementation of Stack for the
+
+
+ Nicko Cadell
+
+
+
+ The stack store.
+
+
+
+
+ Internal constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Clears all the contextual information held in this stack.
+
+
+
+ Clears all the contextual information held in this stack.
+ Only call this if you think that this tread is being reused after
+ a previous call execution which may not have completed correctly.
+ You do not need to use this method if you always guarantee to call
+ the method of the
+ returned from even in exceptional circumstances,
+ for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message"))
+ syntax.
+
+
+
+
+
+ Removes the top context from this stack.
+
+ The message in the context that was removed from the top of this stack.
+
+
+ Remove the top context from this stack, and return
+ it to the caller. If this stack is empty then an
+ empty string (not ) is returned.
+
+
+
+
+
+ Pushes a new context message into this stack.
+
+ The new context message.
+
+ An that can be used to clean up the context stack.
+
+
+
+ Pushes a new context onto this stack. An
+ is returned that can be used to clean up this stack. This
+ can be easily combined with the using keyword to scope the
+ context.
+
+
+ Simple example of using the Push method with the using keyword.
+
+ using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message"))
+ {
+ log.Warn("This should have an ThreadContext Stack message");
+ }
+
+
+
+
+
+ Gets the current context information for this stack.
+
+ The current context information.
+
+
+
+ Gets the current context information for this stack.
+
+ Gets the current context information
+
+
+ Gets the current context information for this stack.
+
+
+
+
+
+ Get a portable version of this object
+
+ the portable instance of this object
+
+
+ Get a cross thread portable version of this object
+
+
+
+
+
+ The number of messages in the stack
+
+
+ The current number of messages in the stack
+
+
+
+ The current number of messages in the stack. That is
+ the number of times has been called
+ minus the number of times has been called.
+
+
+
+
+
+ Gets and sets the internal stack used by this
+
+ The internal storage stack
+
+
+ This property is provided only to support backward compatability
+ of the . Tytpically the internal stack should not
+ be modified.
+
+
+
+
+
+ Inner class used to represent a single context frame in the stack.
+
+
+
+ Inner class used to represent a single context frame in the stack.
+
+
+
+
+
+ Constructor
+
+ The message for this context.
+ The parent context in the chain.
+
+
+ Initializes a new instance of the class
+ with the specified message and parent context.
+
+
+
+
+
+ Get the message.
+
+ The message.
+
+
+ Get the message.
+
+
+
+
+
+ Gets the full text of the context down to the root level.
+
+
+ The full text of the context down to the root level.
+
+
+
+ Gets the full text of the context down to the root level.
+
+
+
+
+
+ Struct returned from the method.
+
+
+
+ This struct implements the and is designed to be used
+ with the pattern to remove the stack frame at the end of the scope.
+
+
+
+
+
+ The ThreadContextStack internal stack
+
+
+
+
+ The depth to trim the stack to when this instance is disposed
+
+
+
+
+ Constructor
+
+ The internal stack used by the ThreadContextStack.
+ The depth to return the stack to when this object is disposed.
+
+
+ Initializes a new instance of the class with
+ the specified stack and return depth.
+
+
+
+
+
+ Returns the stack to the correct depth.
+
+
+
+ Returns the stack to the correct depth.
+
+
+
+
+
+ Implementation of Stacks collection for the
+
+
+
+ Implementation of Stacks collection for the
+
+
+ Nicko Cadell
+
+
+
+ Internal constructor
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ The fully qualified type of the ThreadContextStacks class.
+
+
+ Used by the internal logger to record the Type of the
+ log message.
+
+
+
+
+ Gets the named thread context stack
+
+
+ The named stack
+
+
+
+ Gets the named thread context stack
+
+
+
+
+
+ Utility class for transforming strings.
+
+
+
+ Utility class for transforming strings.
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+
+ Write a string to an
+
+ the writer to write to
+ the string to write
+ The string to replace non XML compliant chars with
+
+
+ The test is escaped either using XML escape entities
+ or using CDATA sections.
+
+
+
+
+
+ Replace invalid XML characters in text string
+
+ the XML text input string
+ the string to use in place of invalid characters
+ A string that does not contain invalid XML characters.
+
+
+ Certain Unicode code points are not allowed in the XML InfoSet, for
+ details see: http://www.w3.org/TR/REC-xml/#charsets.
+
+
+ This method replaces any illegal characters in the input string
+ with the mask string specified.
+
+
+
+
+
+ Count the number of times that the substring occurs in the text
+
+ the text to search
+ the substring to find
+ the number of times the substring occurs in the text
+
+
+ The substring is assumed to be non repeating within itself.
+
+
+
+
+
+ Characters illegal in XML 1.0
+
+
+
+
+ Impersonate a Windows Account
+
+
+
+ This impersonates a Windows account.
+
+
+ How the impersonation is done depends on the value of .
+ This allows the context to either impersonate a set of user credentials specified
+ using username, domain name and password or to revert to the process credentials.
+
+
+
+
+
+ Default constructor
+
+
+
+ Default constructor
+
+
+
+
+
+ Initialize the SecurityContext based on the options set.
+
+
+
+ This is part of the delayed object
+ activation scheme. The method must
+ be called on this object after the configuration properties have
+ been set. Until is called this
+ object is in an undefined state and must not be used.
+
+
+ If any of the configuration properties are modified then
+ must be called again.
+
+
+ The security context will try to Logon the specified user account and
+ capture a primary token for impersonation.
+
+
+ The required ,
+ or properties were not specified.
+
+
+
+ Impersonate the Windows account specified by the and properties.
+
+ caller provided state
+
+ An instance that will revoke the impersonation of this SecurityContext
+
+
+
+ Depending on the property either
+ impersonate a user using credentials supplied or revert
+ to the process credentials.
+
+
+
+
+
+ Create a given the userName, domainName and password.
+
+ the user name
+ the domain name
+ the password
+ the for the account specified
+
+
+ Uses the Windows API call LogonUser to get a principal token for the account. This
+ token is used to initialize the WindowsIdentity.
+
+
+
+
+
+ Gets or sets the impersonation mode for this security context
+
+
+ The impersonation mode for this security context
+
+
+
+ Impersonate either a user with user credentials or
+ revert this thread to the credentials of the process.
+ The value is one of the
+ enum.
+
+
+ The default value is
+
+
+ When the mode is set to
+ the user's credentials are established using the
+ , and
+ values.
+
+
+ When the mode is set to
+ no other properties need to be set. If the calling thread is
+ impersonating then it will be reverted back to the process credentials.
+
+
+
+
+
+ Gets or sets the Windows username for this security context
+
+
+ The Windows username for this security context
+
+
+
+ This property must be set if
+ is set to (the default setting).
+
+
+
+
+
+ Gets or sets the Windows domain name for this security context
+
+
+ The Windows domain name for this security context
+
+
+
+ The default value for is the local machine name
+ taken from the property.
+
+
+ This property must be set if
+ is set to (the default setting).
+
+
+
+
+
+ Sets the password for the Windows account specified by the and properties.
+
+
+ The password for the Windows account specified by the and properties.
+
+
+
+ This property must be set if
+ is set to (the default setting).
+
+
+
+
+
+ The impersonation modes for the
+
+
+
+ See the property for
+ details.
+
+
+
+
+
+ Impersonate a user using the credentials supplied
+
+
+
+
+ Revert this the thread to the credentials of the process
+
+
+
+
+ Adds to
+
+
+
+ Helper class to expose the
+ through the interface.
+
+
+
+
+
+ Constructor
+
+ the impersonation context being wrapped
+
+
+ Constructor
+
+
+
+
+
+ Revert the impersonation
+
+
+
+ Revert the impersonation
+
+
+
+
+
+ The log4net Global Context.
+
+
+
+ The GlobalContext provides a location for global debugging
+ information to be stored.
+
+
+ The global context has a properties map and these properties can
+ be included in the output of log messages. The
+ supports selecting and outputing these properties.
+
+
+ By default the log4net:HostName property is set to the name of
+ the current machine.
+
+
+
+
+ GlobalContext.Properties["hostname"] = Environment.MachineName;
+
+
+
+ Nicko Cadell
+
+
+
+ Private Constructor.
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+ The global context properties instance
+
+
+
+
+ The global properties map.
+
+
+ The global properties map.
+
+
+
+ The global properties map.
+
+
+
+
+
+ Provides information about the environment the assembly has
+ been built for.
+
+
+
+ Version of the assembly
+
+
+ Version of the framework targeted
+
+
+ Type of framework targeted
+
+
+ Does it target a client profile?
+
+
+
+ Identifies the version and target for this assembly.
+
+
+
+
+ The log4net Logical Thread Context.
+
+
+
+ The LogicalThreadContext provides a location for specific debugging
+ information to be stored.
+ The LogicalThreadContext properties override any or
+ properties with the same name.
+
+
+ For .NET Standard 1.3 this class uses
+ System.Threading.AsyncLocal rather than .
+
+
+ The Logical Thread Context has a properties map and a stack.
+ The properties and stack can
+ be included in the output of log messages. The
+ supports selecting and outputting these properties.
+
+
+ The Logical Thread Context provides a diagnostic context for the current call context.
+ This is an instrument for distinguishing interleaved log
+ output from different sources. Log output is typically interleaved
+ when a server handles multiple clients near-simultaneously.
+
+
+ The Logical Thread Context is managed on a per basis.
+
+
+ The requires a link time
+ for the
+ .
+ If the calling code does not have this permission then this context will be disabled.
+ It will not store any property values set on it.
+
+
+ Example of using the thread context properties to store a username.
+
+ LogicalThreadContext.Properties["user"] = userName;
+ log.Info("This log message has a LogicalThreadContext Property called 'user'");
+
+
+ Example of how to push a message into the context stack
+
+ using(LogicalThreadContext.Stacks["LDC"].Push("my context message"))
+ {
+ log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'");
+
+ } // at the end of the using block the message is automatically popped
+
+
+
+ Nicko Cadell
+
+
+
+ Private Constructor.
+
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+
+ The thread context properties instance
+
+
+
+
+ The thread context stacks instance
+
+
+
+
+ The thread properties map
+
+
+ The thread properties map
+
+
+
+ The LogicalThreadContext properties override any
+ or properties with the same name.
+
+
+
+
+
+ The thread stacks
+
+
+ stack map
+
+
+
+ The logical thread stacks.
+
+
+
+
+
+ This class is used by client applications to request logger instances.
+
+
+
+ This class has static methods that are used by a client to request
+ a logger instance. The method is
+ used to retrieve a logger.
+
+
+ See the interface for more details.
+
+
+ Simple example of logging messages
+
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.Info("Application Start");
+ log.Debug("This is a debug message");
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is another debug message");
+ }
+
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+ Returns the named logger if it exists.
+
+ Returns the named logger if it exists.
+
+
+
+ If the named logger exists (in the default repository) then it
+ returns a reference to the logger, otherwise it returns null.
+
+
+ The fully qualified logger name to look for.
+ The logger found, or null if no logger could be found.
+
+
+ Get the currently defined loggers.
+
+ Returns all the currently defined loggers in the default repository.
+
+
+ The root logger is not included in the returned array.
+
+ All the defined loggers.
+
+
+ Get or create a logger.
+
+ Retrieves or creates a named logger.
+
+
+
+ Retrieves a logger named as the
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+
+
+ The name of the logger to retrieve.
+ The logger with the name specified.
+
+
+
+ Returns the named logger if it exists.
+
+
+
+ If the named logger exists (in the specified repository) then it
+ returns a reference to the logger, otherwise it returns
+ null.
+
+
+ The repository to lookup in.
+ The fully qualified logger name to look for.
+
+ The logger found, or null if the logger doesn't exist in the specified
+ repository.
+
+
+
+
+ Returns the named logger if it exists.
+
+
+
+ If the named logger exists (in the repository for the specified assembly) then it
+ returns a reference to the logger, otherwise it returns
+ null.
+
+
+ The assembly to use to lookup the repository.
+ The fully qualified logger name to look for.
+
+ The logger, or null if the logger doesn't exist in the specified
+ assembly's repository.
+
+
+
+
+ Returns all the currently defined loggers in the specified repository.
+
+ The repository to lookup in.
+
+ The root logger is not included in the returned array.
+
+ All the defined loggers.
+
+
+
+ Returns all the currently defined loggers in the specified assembly's repository.
+
+ The assembly to use to lookup the repository.
+
+ The root logger is not included in the returned array.
+
+ All the defined loggers.
+
+
+
+ Retrieves or creates a named logger.
+
+
+
+ Retrieve a logger named as the
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+
+
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+
+
+ The repository to lookup in.
+ The name of the logger to retrieve.
+ The logger with the name specified.
+
+
+
+ Retrieves or creates a named logger.
+
+
+
+ Retrieve a logger named as the
+ parameter. If the named logger already exists, then the
+ existing instance will be returned. Otherwise, a new instance is
+ created.
+
+
+ By default, loggers do not have a set level but inherit
+ it from the hierarchy. This is one of the central features of
+ log4net.
+
+
+ The assembly to use to lookup the repository.
+ The name of the logger to retrieve.
+ The logger with the name specified.
+
+
+
+ Shorthand for .
+
+
+ Get the logger for the fully qualified name of the type specified.
+
+ The full name of will be used as the name of the logger to retrieve.
+ The logger with the name specified.
+
+
+
+ Shorthand for .
+
+
+ Gets the logger for the fully qualified name of the type specified.
+
+ The repository to lookup in.
+ The full name of will be used as the name of the logger to retrieve.
+ The logger with the name specified.
+
+
+
+ Shorthand for .
+
+
+ Gets the logger for the fully qualified name of the type specified.
+
+ The assembly to use to lookup the repository.
+ The full name of will be used as the name of the logger to retrieve.
+ The logger with the name specified.
+
+
+
+ Shuts down the log4net system.
+
+
+
+ Calling this method will safely close and remove all
+ appenders in all the loggers including root contained in all the
+ default repositories.
+
+
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+
+ The shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+
+
+ Shutdown a logger repository.
+
+ Shuts down the default repository.
+
+
+
+ Calling this method will safely close and remove all
+ appenders in all the loggers including root contained in the
+ default repository.
+
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+
+ The shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+
+
+
+ Shuts down the repository for the repository specified.
+
+
+
+ Calling this method will safely close and remove all
+ appenders in all the loggers including root contained in the
+ specified.
+
+
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+
+ The shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+ The repository to shutdown.
+
+
+
+ Shuts down the repository specified.
+
+
+
+ Calling this method will safely close and remove all
+ appenders in all the loggers including root contained in the
+ repository. The repository is looked up using
+ the specified.
+
+
+ Some appenders need to be closed before the application exists.
+ Otherwise, pending logging events might be lost.
+
+
+ The shutdown method is careful to close nested
+ appenders before closing regular appenders. This is allows
+ configurations where a regular appender is attached to a logger
+ and again to a nested appender.
+
+
+ The assembly to use to lookup the repository.
+
+
+ Reset the configuration of a repository
+
+ Resets all values contained in this repository instance to their defaults.
+
+
+
+ Resets all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to null,
+ sets their additivity flag to true and sets the level
+ of the root logger to . Moreover,
+ message disabling is set to its default "off" value.
+
+
+
+
+
+ Resets all values contained in this repository instance to their defaults.
+
+
+
+ Reset all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to null,
+ sets their additivity flag to true and sets the level
+ of the root logger to . Moreover,
+ message disabling is set to its default "off" value.
+
+
+ The repository to reset.
+
+
+
+ Resets all values contained in this repository instance to their defaults.
+
+
+
+ Reset all values contained in the repository instance to their
+ defaults. This removes all appenders from all loggers, sets
+ the level of all non-root loggers to null,
+ sets their additivity flag to true and sets the level
+ of the root logger to . Moreover,
+ message disabling is set to its default "off" value.
+
+
+ The assembly to use to lookup the repository to reset.
+
+
+ Get the logger repository.
+
+ Returns the default instance.
+
+
+
+ Gets the for the repository specified
+ by the callers assembly ().
+
+
+ The instance for the default repository.
+
+
+
+ Returns the default instance.
+
+ The default instance.
+
+
+ Gets the for the repository specified
+ by the argument.
+
+
+ The repository to lookup in.
+
+
+
+ Returns the default instance.
+
+ The default instance.
+
+
+ Gets the for the repository specified
+ by the argument.
+
+
+ The assembly to use to lookup the repository.
+
+
+ Get a logger repository.
+
+ Returns the default instance.
+
+
+
+ Gets the for the repository specified
+ by the callers assembly ().
+
+
+ The instance for the default repository.
+
+
+
+ Returns the default instance.
+
+ The default instance.
+
+
+ Gets the for the repository specified
+ by the argument.
+
+
+ The repository to lookup in.
+
+
+
+ Returns the default instance.
+
+ The default instance.
+
+
+ Gets the for the repository specified
+ by the argument.
+
+
+ The assembly to use to lookup the repository.
+
+
+ Create a domain
+
+ Creates a repository with the specified repository type.
+
+
+
+ CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.
+
+
+ The created will be associated with the repository
+ specified such that a call to will return
+ the same repository instance.
+
+
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+ Create a logger repository.
+
+ Creates a repository with the specified repository type.
+
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+ The created will be associated with the repository
+ specified such that a call to will return
+ the same repository instance.
+
+
+
+
+
+ Creates a repository with the specified name.
+
+
+
+ CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.
+
+
+ Creates the default type of which is a
+ object.
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An will be thrown if the repository already exists.
+
+
+ The name of the repository, this must be unique amongst repositories.
+ The created for the repository.
+ The specified repository already exists.
+
+
+
+ Creates a repository with the specified name.
+
+
+
+ Creates the default type of which is a
+ object.
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An will be thrown if the repository already exists.
+
+
+ The name of the repository, this must be unique amongst repositories.
+ The created for the repository.
+ The specified repository already exists.
+
+
+
+ Creates a repository with the specified name and repository type.
+
+
+
+ CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An will be thrown if the repository already exists.
+
+
+ The name of the repository, this must be unique to the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+ The specified repository already exists.
+
+
+
+ Creates a repository with the specified name and repository type.
+
+
+
+ The name must be unique. Repositories cannot be redefined.
+ An will be thrown if the repository already exists.
+
+
+ The name of the repository, this must be unique to the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+ The specified repository already exists.
+
+
+
+ Creates a repository for the specified assembly and repository type.
+
+
+
+ CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same assembly specified will return the same repository instance.
+
+
+ The assembly to use to get the name of the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+
+ Creates a repository for the specified assembly and repository type.
+
+
+
+ The created will be associated with the repository
+ specified such that a call to with the
+ same assembly specified will return the same repository instance.
+
+
+ The assembly to use to get the name of the repository.
+ A that implements
+ and has a no arg constructor. An instance of this type will be created to act
+ as the for the repository specified.
+ The created for the repository.
+
+
+
+ Gets the list of currently defined repositories.
+
+
+
+ Get an array of all the objects that have been created.
+
+
+ An array of all the known objects.
+
+
+
+ Flushes logging events buffered in all configured appenders in the default repository.
+
+ The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed.
+ True if all logging events were flushed successfully, else false.
+
+
+
+ Looks up the wrapper object for the logger specified.
+
+ The logger to get the wrapper for.
+ The wrapper for the logger specified.
+
+
+
+ Looks up the wrapper objects for the loggers specified.
+
+ The loggers to get the wrappers for.
+ The wrapper objects for the loggers specified.
+
+
+
+ Create the objects used by
+ this manager.
+
+ The logger to wrap.
+ The wrapper for the logger specified.
+
+
+
+ The wrapper map to use to hold the objects.
+
+
+
+
+ Implementation of Mapped Diagnostic Contexts.
+
+
+
+
+ The MDC is deprecated and has been replaced by the .
+ The current MDC implementation forwards to the ThreadContext.Properties.
+
+
+
+ The MDC class is similar to the class except that it is
+ based on a map instead of a stack. It provides mapped
+ diagnostic contexts. A Mapped Diagnostic Context, or
+ MDC in short, is an instrument for distinguishing interleaved log
+ output from different sources. Log output is typically interleaved
+ when a server handles multiple clients near-simultaneously.
+
+
+ The MDC is managed on a per thread basis.
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+ Gets the context value identified by the parameter.
+
+ The key to lookup in the MDC.
+ The string value held for the key, or a null reference if no corresponding value is found.
+
+
+
+ The MDC is deprecated and has been replaced by the .
+ The current MDC implementation forwards to the ThreadContext.Properties.
+
+
+
+ If the parameter does not look up to a
+ previously defined context then null will be returned.
+
+
+
+
+
+ Add an entry to the MDC
+
+ The key to store the value under.
+ The value to store.
+
+
+
+ The MDC is deprecated and has been replaced by the .
+ The current MDC implementation forwards to the ThreadContext.Properties.
+
+
+
+ Puts a context value (the parameter) as identified
+ with the parameter into the current thread's
+ context map.
+
+
+ If a value is already defined for the
+ specified then the value will be replaced. If the
+ is specified as null then the key value mapping will be removed.
+
+
+
+
+
+ Removes the key value mapping for the key specified.
+
+ The key to remove.
+
+
+
+ The MDC is deprecated and has been replaced by the .
+ The current MDC implementation forwards to the ThreadContext.Properties.
+
+
+
+ Remove the specified entry from this thread's MDC
+
+
+
+
+
+ Clear all entries in the MDC
+
+
+
+
+ The MDC is deprecated and has been replaced by the .
+ The current MDC implementation forwards to the ThreadContext.Properties.
+
+
+
+ Remove all the entries from this thread's MDC
+
+
+
+
+
+ Implementation of Nested Diagnostic Contexts.
+
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ A Nested Diagnostic Context, or NDC in short, is an instrument
+ to distinguish interleaved log output from different sources. Log
+ output is typically interleaved when a server handles multiple
+ clients near-simultaneously.
+
+
+ Interleaved log output can still be meaningful if each log entry
+ from different contexts had a distinctive stamp. This is where NDCs
+ come into play.
+
+
+ Note that NDCs are managed on a per thread basis. The NDC class
+ is made up of static methods that operate on the context of the
+ calling thread.
+
+
+ How to push a message into the context
+
+ using(NDC.Push("my context message"))
+ {
+ ... all log calls will have 'my context message' included ...
+
+ } // at the end of the using block the message is automatically removed
+
+
+
+ Nicko Cadell
+ Gert Driesen
+
+
+
+ Initializes a new instance of the class.
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+ Clears all the contextual information held on the current thread.
+
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ Clears the stack of NDC data held on the current thread.
+
+
+
+
+
+ Creates a clone of the stack of context information.
+
+ A clone of the context info for this thread.
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ The results of this method can be passed to the
+ method to allow child threads to inherit the context of their
+ parent thread.
+
+
+
+
+
+ Inherits the contextual information from another thread.
+
+ The context stack to inherit.
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ This thread will use the context information from the stack
+ supplied. This can be used to initialize child threads with
+ the same contextual information as their parent threads. These
+ contexts will NOT be shared. Any further contexts that
+ are pushed onto the stack will not be visible to the other.
+ Call to obtain a stack to pass to
+ this method.
+
+
+
+
+
+ Removes the top context from the stack.
+
+
+ The message in the context that was removed from the top
+ of the stack.
+
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ Remove the top context from the stack, and return
+ it to the caller. If the stack is empty then an
+ empty string (not null) is returned.
+
+
+
+
+
+ Pushes a new context message.
+
+ The new context message.
+
+ An that can be used to clean up
+ the context stack.
+
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ Pushes a new context onto the context stack. An
+ is returned that can be used to clean up the context stack. This
+ can be easily combined with the using keyword to scope the
+ context.
+
+
+ Simple example of using the Push method with the using keyword.
+
+ using(log4net.NDC.Push("NDC_Message"))
+ {
+ log.Warn("This should have an NDC message");
+ }
+
+
+
+
+
+ Pushes a new context message.
+
+ The new context message string format.
+ Arguments to be passed into messageFormat.
+
+ An that can be used to clean up
+ the context stack.
+
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ Pushes a new context onto the context stack. An
+ is returned that can be used to clean up the context stack. This
+ can be easily combined with the using keyword to scope the
+ context.
+
+
+ Simple example of using the Push method with the using keyword.
+
+ var someValue = "ExampleContext"
+ using(log4net.NDC.PushFormat("NDC_Message {0}", someValue))
+ {
+ log.Warn("This should have an NDC message");
+ }
+
+
+
+
+
+ Removes the context information for this thread. It is
+ not required to call this method.
+
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ This method is not implemented.
+
+
+
+
+
+ Forces the stack depth to be at most .
+
+ The maximum depth of the stack
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ Forces the stack depth to be at most .
+ This may truncate the head of the stack. This only affects the
+ stack in the current thread. Also it does not prevent it from
+ growing, it only sets the maximum depth at the time of the
+ call. This can be used to return to a known context depth.
+
+
+
+
+
+ Gets the current context depth.
+
+ The current context depth.
+
+
+
+ The NDC is deprecated and has been replaced by the .
+ The current NDC implementation forwards to the ThreadContext.Stacks["NDC"].
+
+
+
+ The number of context values pushed onto the context stack.
+
+
+ Used to record the current depth of the context. This can then
+ be restored using the method.
+
+
+
+
+
+
+ The log4net Thread Context.
+
+
+
+ The ThreadContext provides a location for thread specific debugging
+ information to be stored.
+ The ThreadContext properties override any
+ properties with the same name.
+
+
+ The thread context has a properties map and a stack.
+ The properties and stack can
+ be included in the output of log messages. The
+ supports selecting and outputting these properties.
+
+
+ The Thread Context provides a diagnostic context for the current thread.
+ This is an instrument for distinguishing interleaved log
+ output from different sources. Log output is typically interleaved
+ when a server handles multiple clients near-simultaneously.
+
+
+ The Thread Context is managed on a per thread basis.
+
+
+ Example of using the thread context properties to store a username.
+
+ ThreadContext.Properties["user"] = userName;
+ log.Info("This log message has a ThreadContext Property called 'user'");
+
+
+ Example of how to push a message into the context stack
+
+ using(ThreadContext.Stacks["NDC"].Push("my context message"))
+ {
+ log.Info("This log message has a ThreadContext Stack message that includes 'my context message'");
+
+ } // at the end of the using block the message is automatically popped
+
+
+
+ Nicko Cadell
+
+
+
+ Private Constructor.
+
+
+
+ Uses a private access modifier to prevent instantiation of this class.
+
+
+
+
+
+ The thread context properties instance
+
+
+
+
+ The thread context stacks instance
+
+
+
+
+ The thread properties map
+
+
+ The thread properties map
+
+
+
+ The ThreadContext properties override any
+ properties with the same name.
+
+
+
+
+
+ The thread stacks
+
+
+ stack map
+
+
+
+ The thread local stacks.
+
+
+
+
+
diff --git a/Bin/myLog.dll b/Bin/myLog.dll
new file mode 100644
index 0000000..4e3e801
Binary files /dev/null and b/Bin/myLog.dll differ
diff --git a/Bin/myLog.pdb b/Bin/myLog.pdb
new file mode 100644
index 0000000..614dc36
Binary files /dev/null and b/Bin/myLog.pdb differ
diff --git a/DXTempFolder/BinaryData/20ec0b42-896c-41a0-985b-74d43185b991Page1_WebChartInOrders2.bmp b/DXTempFolder/BinaryData/20ec0b42-896c-41a0-985b-74d43185b991Page1_WebChartInOrders2.bmp
new file mode 100644
index 0000000..db1e4d9
Binary files /dev/null and b/DXTempFolder/BinaryData/20ec0b42-896c-41a0-985b-74d43185b991Page1_WebChartInOrders2.bmp differ
diff --git a/DXTempFolder/BinaryData/234d5061-85ed-4df3-bd78-a7558d5cf9b4Page1_WebChartOutOrders.bmp b/DXTempFolder/BinaryData/234d5061-85ed-4df3-bd78-a7558d5cf9b4Page1_WebChartOutOrders.bmp
new file mode 100644
index 0000000..c5d1ae3
Binary files /dev/null and b/DXTempFolder/BinaryData/234d5061-85ed-4df3-bd78-a7558d5cf9b4Page1_WebChartOutOrders.bmp differ
diff --git a/DXTempFolder/BinaryData/3b374027-dbae-4280-8171-bcb4513ca357Page1_WebChartInOutLines.bmp b/DXTempFolder/BinaryData/3b374027-dbae-4280-8171-bcb4513ca357Page1_WebChartInOutLines.bmp
new file mode 100644
index 0000000..a400d06
Binary files /dev/null and b/DXTempFolder/BinaryData/3b374027-dbae-4280-8171-bcb4513ca357Page1_WebChartInOutLines.bmp differ
diff --git a/DXTempFolder/BinaryData/4f87dab5-417d-418f-bd17-64f301204ddePage1_WebChartInOrders.bmp b/DXTempFolder/BinaryData/4f87dab5-417d-418f-bd17-64f301204ddePage1_WebChartInOrders.bmp
new file mode 100644
index 0000000..6426a04
Binary files /dev/null and b/DXTempFolder/BinaryData/4f87dab5-417d-418f-bd17-64f301204ddePage1_WebChartInOrders.bmp differ
diff --git a/DXTempFolder/BinaryData/5dcb3185-e1a4-4f12-a394-8d78b96cc9ccPage1_WebChartLocs.bmp b/DXTempFolder/BinaryData/5dcb3185-e1a4-4f12-a394-8d78b96cc9ccPage1_WebChartLocs.bmp
new file mode 100644
index 0000000..5a2928e
Binary files /dev/null and b/DXTempFolder/BinaryData/5dcb3185-e1a4-4f12-a394-8d78b96cc9ccPage1_WebChartLocs.bmp differ
diff --git a/DXTempFolder/BinaryData/77b211fc-a02b-42e6-bb08-70dc2d6bfa76Page1_WebChartTasks.bmp b/DXTempFolder/BinaryData/77b211fc-a02b-42e6-bb08-70dc2d6bfa76Page1_WebChartTasks.bmp
new file mode 100644
index 0000000..34a8ad4
Binary files /dev/null and b/DXTempFolder/BinaryData/77b211fc-a02b-42e6-bb08-70dc2d6bfa76Page1_WebChartTasks.bmp differ
diff --git a/DXTempFolder/BinaryData/8ed4471f-8746-4410-9538-641a4e3d9d69Page1_WebChartStatePie.bmp b/DXTempFolder/BinaryData/8ed4471f-8746-4410-9538-641a4e3d9d69Page1_WebChartStatePie.bmp
new file mode 100644
index 0000000..08bd25e
Binary files /dev/null and b/DXTempFolder/BinaryData/8ed4471f-8746-4410-9538-641a4e3d9d69Page1_WebChartStatePie.bmp differ
diff --git a/DXTempFolder/BinaryData/bb3fd5c4-ee4b-464c-85ff-73c221bd18eaPage1_WebChartEmpTasks.bmp b/DXTempFolder/BinaryData/bb3fd5c4-ee4b-464c-85ff-73c221bd18eaPage1_WebChartEmpTasks.bmp
new file mode 100644
index 0000000..68c0818
Binary files /dev/null and b/DXTempFolder/BinaryData/bb3fd5c4-ee4b-464c-85ff-73c221bd18eaPage1_WebChartEmpTasks.bmp differ
diff --git a/DXTempFolder/BinaryData/d5cf3cd0-a0f0-4ff3-88f8-5ad7826769afPage1_WebChartPartTasks.bmp b/DXTempFolder/BinaryData/d5cf3cd0-a0f0-4ff3-88f8-5ad7826769afPage1_WebChartPartTasks.bmp
new file mode 100644
index 0000000..e48c956
Binary files /dev/null and b/DXTempFolder/BinaryData/d5cf3cd0-a0f0-4ff3-88f8-5ad7826769afPage1_WebChartPartTasks.bmp differ
diff --git a/Default.aspx b/Default.aspx
new file mode 100644
index 0000000..ae3a6cc
--- /dev/null
+++ b/Default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" MasterPageFile="~/masterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>
+
+<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
+
+
+
+
+
+
+
+
+
+
diff --git a/Default.aspx.cs b/Default.aspx.cs
new file mode 100644
index 0000000..4cd9d78
--- /dev/null
+++ b/Default.aspx.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Data;
+using System.Configuration;
+using System.Collections;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+public partial class _Default : System.Web.UI.Page
+{
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ Response.Redirect("index.aspx",true);
+ }
+ protected void Button1_Click(object sender, EventArgs e)
+ {
+ if ((Session["CurrentUser"] != null))
+ {
+
+ if (System.Configuration.ConfigurationManager.AppSettings["sessionstate"] != "InProc")
+ if (Session["CurrentUserId"] != null)
+ {
+ // ((ArrayList)Application["userlst"]).Remove(Session["CurrentUserAccount"].ToString());abc
+ DeiNiu.RequestLog logobj = new DeiNiu.RequestLog();
+ logobj.LogoutLog(int.Parse(Session["CurrentUserId"].ToString()));
+ }
+ }
+ }
+}
diff --git a/Desktop.aspx b/Desktop.aspx
new file mode 100644
index 0000000..504fcbb
--- /dev/null
+++ b/Desktop.aspx
@@ -0,0 +1,194 @@
+<%@ Page Language="C#" MasterPageFile="~/masterPage.master" AutoEventWireup="true" ClassName="Desktop"
+ CodeFile="Desktop.aspx.cs" Inherits="Desktop" %>
+<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
+
+
+