1.新建一个log4net.xml的xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="LogFile" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="AppLog\\Log_" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd".log""/>
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--定义输出风格-->
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value="
----------------------Log--------------------------
" />
<param name="Footer" value="
----------------------Log End--------------------------
" />
</layout>
</appender>
<logger name="logApp">
<!--定义logger对象的名字为logApp,以方便在代码中使用,<logger>
配置项可以不配置-->
<level value="ALL" />
<!--定义输出的信息等级为所有其中包括Fatal.Error.Warn.Info.Debug-->
</logger>
<root>
<!--定义日志输出的方式和等级-->
<level value="INFO" />
<appender-ref ref="LogFile" />
<!--选择了文件输出,注意粗体部分对应的名称-->
</root>
</log4net>
2.新建一个类名:LogManagement
private LogManagement()
{
try
{
IsCloseInfo = false;
IsCloseError = false;
string sCfgPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.xml");
if (!File.Exists(sCfgPath)) return;
log4net.Config.XmlConfigurator.Configure(new FileInfo(sCfgPath));
string sPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.dll");
if (!File.Exists(sPath)) return;
log = log4net.LogManager.GetLogger("logApp");
}
catch(Exception ex)
{
WriteSysLog(ex);
}
}
private void WriteSysLog(Exception ex)
{
EventLog sysLog = new EventLog("Eventlog2", ".", "Eventlog2");
sysLog.WriteEntry(ex.Message, EventLogEntryType.Error);
sysLog = null;
}
private ILog log;
private static LogManagement _logger;
/// <summary>
/// 日志实例
/// </summary>
public static LogManagement Logger
{
get
{
if (_logger == null) _logger = new LogManagement();
return _logger;
}
}
/// <summary>
/// 写入异常日志
/// </summary>
/// <param name="sDesc">描述</param>
/// <param name="ex">异常类</param>
public void WriteError(string sDesc, Exception ex)
{
if (log == null || IsCloseError) return;
try
{
if (log.IsErrorEnabled)
log.Error(sDesc, ex);
else
WriteSysLog(ex);
}
catch// (Exception ex)
{
}
}
/// <summary>
/// 写入记录日期
/// </summary>
/// <param name="sMsg">错误信息</param>
public void WriteInfo(string sMsg)
{
if (log == null || IsCloseInfo) return;
try
{
if (log.IsInfoEnabled)
log.Info(sMsg);
}
catch// (Exception ex)
{
}
}
/// <summary>
/// 关闭错误日志输出
/// </summary>
public bool IsCloseError
{
get;
set;
}
/// <summary>
/// 关闭信息日志输出
/// </summary>
public bool IsCloseInfo
{
get;
set;
}
/// <summary>
/// 关闭所有日志输出
/// </summary>
public bool IsCloseAll
{
get
{
return IsCloseError && IsCloseInfo;
}
set
{
IsCloseError = value;
IsCloseInfo = value;
}
}
3.调用这个日志功能,用LogManagement.WriteInfo("",ex); 这个调用是一个单实例。
去网上下载一个log4net.dll