C#日志系统框架Log4Net




log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<!--配置日志的目标存储形式-->
<root>
<!--输出等级-->
<level value="ALL" />
<!--控制台形式-->
<appender-ref ref="ConsoleAppender" />
<!--文件形式-->
<appender-ref ref = "FileAppender" />
</root>
<!--控制台形式-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
<!--文件形式-->
<appender name="FileAppender" type="log4net.Appender.FileAppender" >
<!--文件路径-->
<file value = "Log/log-file.txt" />
<!--是否追加-->
<appendToFile value = "true" />
<!--显示格式-->
<layout type = "log4net.Layout.PatternLayout" >
<conversionPattern value = "%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout >
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
</appender>
</log4net>
</configuration>
将log4net属性设置为始终复制


在 AssemblyInfo.cs 中添加一行代码
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

public class LogHelper
{
#region 记录日志
public static void LoggerMsg(LogLevel legLevel, string msg)
{
log4net.ILog log = GetLogger();
switch (legLevel)
{
case LogLevel.Debug: log.Debug(msg); break;
case LogLevel.Error: log.Error(msg); break;
case LogLevel.Fatal: log.Fatal(msg); break;
case LogLevel.Info: log.Info(msg); break;
case LogLevel.Warn: log.Warn(msg); break;
default: break;
}
}
#endregion
#region 获得一个日志记录对象
public static log4net.ILog GetLogger()
{
return log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
}
#endregion
}
public enum LogLevel
{
Debug,
Info,
Warn,
Error,
Fatal,
}
public FrmMain()
{
InitializeComponent();
LogHelper.LoggerMsg(LogLevel.Info, "hello,log4net!");
}
