最近在弄使用Log4net记录日志。
将配置文件封装到的DLL中。
封装步骤:
1.将配置文件添加到类库中。
2.在配置文件上右键,选择属性。
3.
此时生成类库。DLL中就存在该配置文件啦。如图:
在类库中使用该配置文件:
//获取配置文件全称 string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config"; //读取配置文件 System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str); log4net.Config.XmlConfigurator.Configure(stream);
附上使用Log4net全部代码
1.配置文件:Log4net.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <logger name="ErrorLog"> <level value="ERROR"></level> <appender-ref ref="ErrorLog"></appender-ref> </logger> <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender"> <param name="File" value="ErrorLog/" /> <param name="AppendToFile" value="true" /> <!--是否默认文件名--> <param name="StaticLogFileName" value="false" /> <!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" /> </layout> </appender> <logger name="InfoLog"> <level value="INFO"></level> <appender-ref ref="InfoLog"></appender-ref> </logger> <appender name="InfoLog" type="log4net.Appender.RollingFileAppender"> <param name="File" value="InfoLog\\" /> <param name="AppendToFile" value="true" /> <!--是否默认文件名--> <param name="StaticLogFileName" value="false" /> <!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" /> </layout> </appender> <logger name="WarnLog"> <level value="INFO"></level> <appender-ref ref="WarnLog"></appender-ref> </logger> <appender name="WarnLog" type="log4net.Appender.RollingFileAppender"> <param name="File" value="WarnLog\\" /> <param name="AppendToFile" value="true" /> <!--是否默认文件名--> <param name="StaticLogFileName" value="false" /> <!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" /> </layout> </appender> <logger name="FatalLog"> <level value="Fatal"></level> <appender-ref ref="FatalLog"></appender-ref> </logger> <appender name="FatalLog" type="log4net.Appender.RollingFileAppender"> <param name="File" value="FatalLog\\" /> <param name="AppendToFile" value="true" /> <!--是否默认文件名--> <param name="StaticLogFileName" value="false" /> <!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" /> </layout> </appender> </log4net> </configuration>
2.日志帮助类:LogHelper
public class LogHelper { public static LogHelper logHelper=new LogHelper(); private readonly static ILog _errorLog = LogManager.GetLogger("ErrorLog"); private readonly static ILog _infoLog = LogManager.GetLogger("InfoLog"); private readonly static ILog _warnLog = LogManager.GetLogger("WarnLog"); private readonly static ILog _fatalLog = LogManager.GetLogger("FatalLog"); private LogHelper() { //获取配置文件全称 string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config"; //读取配置文件 System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str); log4net.Config.XmlConfigurator.Configure(stream); } /// <summary> /// 普通日志信息 /// </summary> /// <param name="msg">日志内容</param> /// <param name="stackTrace">位置跟踪</param> public void InfoLog(string msg, string stackTrace) { Log(LogType.InfoLog, msg, stackTrace); } /// <summary> /// 警告级日志信息 /// </summary> /// <param name="msg">日志内容</param> /// <param name="stackTrace">位置跟踪</param> public void WarnLog(string msg, string stackTrace) { Log(LogType.WarnLog, msg, stackTrace); } /// <summary> /// Error级日志信息 /// </summary> /// <param name="msg">日志内容</param> /// <param name="stackTrace">位置跟踪</param> public void ErrorLog(string msg, string stackTrace) { Log(LogType.ErrorLog, msg, stackTrace); } /// <summary> /// 致命级日志信息 /// </summary> /// <param name="msg">日志内容</param> /// <param name="stackTrace">位置跟踪</param> public void FatalLog(string msg, string stackTrace) { Log(LogType.FatalLog, msg, stackTrace); } /// <summary> /// 记录日志通用方法 /// </summary> /// <param name="ltype">所添加日志类型,LogType枚举</param> /// <param name="logs">所添加的日志信息</param> public void Log(LogType ltype, params string[] logs) { string msg = string.Join("\n", logs); switch (ltype) { case LogType.InfoLog: if (_infoLog.IsInfoEnabled) _infoLog.Fatal(msg); break; case LogType.WarnLog: if (_warnLog.IsWarnEnabled) _warnLog.Fatal(msg); break; case LogType.ErrorLog: if (_errorLog.IsErrorEnabled) _errorLog.Fatal(msg); break; case LogType.FatalLog: if (_fatalLog.IsFatalEnabled) _fatalLog.Fatal(msg); break; } } } public enum LogType { /// <summary> /// 普通日志 /// </summary> InfoLog = 1, /// <summary> /// 警告级别日志 /// </summary> WarnLog = 2, /// <summary> /// 错误级别日志 /// </summary> ErrorLog = 4, /// <summary> /// 致命级别日志 /// </summary> FatalLog = 8 }