第一步 安装
通过NuGet直接搜索进行安装安装log4net
第二步 编写log4net配置参数
1.添加 log4net.config 文件并更改属性
2.编写 log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!--定义输出到文件中-->
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
<!--日志的路径-->
<file value="Logs/"/>
<!--是否覆盖,默认是追加true-->
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<!--文件名称-->
<DatePattern value="yyyy-MM-dd-HH'.log'">
</DatePattern>
<!--设置无限备份=-1 ,最大备份数为1000-->
<param name="MaxSizeRollBackups" value="1000"/>
<!--每个文件的大小-->
<param name="MaximumFileSize" value="500KB"/>
<!--名称是否可以更改 为false为可以更改-->
<param name="StaticLogFileName" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="[%date][%-5level]%message [Thread:%thread]%n Line:%l %n"/>
</layout>
</appender>
<!--定义输出到控制台命令行中-->
<appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ALL"/>
<foreColor value="White"/>
<backColor value="Red, HighIntensity"/>
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date][%-5level]%message [Thread:%thread]%n Line:%l %n"/>
</layout>
</appender>
<root>
<!--日志的级别 OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL 只有日志输出级别大于或等于配置的级别才能输出日志信息-->
<level value="ALL"/>
<!--文件形式记录日志-->
<appender-ref ref="SysAppender"/>
<!--控制台控制显示日志-->
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
</configuration>
日志文本记录格式参考
<!--
%M 方法名
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 :10:28,921
%l 或 %L 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
%x Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event
%X Used to output the MDC (mapped diagnostic context) associated with the thread that generated the logging event for specified key
-->
第三步 编写帮助类
/// <summary>
/// 说明:通过ilog.Debug()打印日志,可以将代码行数打出来,所以去掉二次封装
/// </summary>
public static class Log4NetHelper
{
public static ILog Logger;
//public static ILog LogError;
//public static ILog LogWarn;
//public static ILog LogInfo;
//public static ILog LogDebug;
static Log4NetHelper()
{
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
string path = Path.Combine(baseDirectory, "log4net.config");
XmlConfigurator.ConfigureAndWatch(new FileInfo(path));
Logger = LogManager.GetLogger("");
//LogError = LogManager.GetLogger("logerroe");
//LogWarn = LogManager.GetLogger("logwarn");
//LogInfo = LogManager.GetLogger("loginfo");
//LogDebug = LogManager.GetLogger("logdebug");
}
///// <summary>
///// 打印错误日志
///// </summary>
///// <param name="msg"></param>
//public static void Error(string msg,Exception ex)
//{
// if (LogError.IsErrorEnabled)
// {
// LogError.Error(msg,ex);
// }
//}
///// <summary>
///// 打印警告日志
///// </summary>
///// <param name="obj"></param>
//public static void Warn(string msg)
//{
// if (LogWarn.IsWarnEnabled)
// {
// LogWarn.Warn(msg);
// }
//}
///// <summary>
///// 打印信息日志
///// </summary>
///// <param name="msg"></param>
//public static void Info(string msg)
//{
// if (LogInfo.IsInfoEnabled)
// {
// LogInfo.Info(msg);
// }
//}
///// <summary>
///// 打印调试日志
///// </summary>
///// <param name="msg"></param>
//public static void Debug(string msg)
//{
// if (LogDebug.IsDebugEnabled)
// {
// LogDebug.Debug(msg);
// }
//}
}
第四步 测试
Log4NetHelper.Logger.Debug("启动");