在dll类库项目中:
1、下载包:添加log4net.dll的引用
2、添加配置文件并命名为:log4net.config。设置复制到输出目录:始终复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低)-->
<log4net>
<!--正常日志类-->
<logger name="info">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!--错误日志类-->
<logger name="error">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<!--正常日志附加介质-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "Log\"/>
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "7"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志文件名格式为:2017-07-25 Info.html-->
<param name= "DatePattern" value= "yyyy-MM-dd "Info.MD""/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<!--日志文本格式-->
<layout type="log4net.Layout.PatternLayout">
<!--%d 时间,等价于 date-->
<!--%t 线程-->
<!--%-5p 日志级别-->
<!--%C 出错类,等价于 class,可以使用:%class{1},如果给出了精度说明符,则只会打印类名中最右边的组件的相应数量。默认情况下,类名以完全限定形式输出。-->
<!--%L 出错行-->
<!--%M 方法名,等价于 method-->
<!--%m 日志信息,等价于 message-->
<!--%n 换行-->
<param name="ConversionPattern" value="<HR COLOR=red>%n/****************************** %d{yyyy-MM-dd HH:mm:ss,fff} [%t] %-5p ******************************/%n★类名:%class{1}%n♦方法名:%M - 第 [%L] 行%n♥消息:%m%n%n" />
</layout>
</appender>
<!--错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "Log\"/>
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "7"/>
<!--日志文件名是否是固定不变的-->
<param name= "StaticLogFileName" value= "false"/>
<!--日志文件名格式为:2017-07-25.log-->
<param name= "DatePattern" value= "yyyy-MM-dd "Error.MD""/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<param name="MaxFileSize" value="1"/>
<!--日志文本格式-->
<layout type="log4net.Layout.PatternLayout">
<!--%d 时间,等价于 date-->
<!--%t 线程-->
<!--%-5p 日志级别-->
<!--%C 出错类,等价于 class,可以使用:%class{1},如果给出了精度说明符,则只会打印类名中最右边的组件的相应数量。默认情况下,类名以完全限定形式输出。-->
<!--%L 出错行-->
<!--%M 方法名,等价于 method-->
<!--%m 日志信息,等价于 message-->
<!--%n 换行-->
<param name="ConversionPattern" value="<HR COLOR=red>%n/****************************** %d{yyyy-MM-dd HH:mm:ss,fff} [%t] %-5p ******************************/%n★类名:%class{1}%n♦方法名:%M - 第 [%L] 行%n♥消息:%m%n%n" />
</layout>
</appender>
</log4net>
</configuration>
3、在AssemblyInfo.cs文件里,写入代码,这样就和项目工程建立起联系
//增加日志配置
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
4、封装一个类:LogHelper
注意:e=null不能直接写入,否则会异常
/// <summary>
/// 日志类
/// </summary>
public class LogHelper
{
private static ILog loginfo = LogManager.GetLogger("info");
private static ILog logerror = LogManager.GetLogger("error");
/// <summary>
/// 打印正常日志
/// </summary>
/// <param name="message"></param>
/// <param name="e"></param>
public static void WriteLogInfo(object message, Exception e = null)
{
if (e == null)
{
loginfo.Info(message);
}
else
{
loginfo.Info(message, e);
}
}
/// <summary>
/// 打印错误日志
/// </summary>
/// <param name="message"></param>
/// <param name="e"></param>
public static void WriteLogError(object message, Exception e = null)
{
if (e == null)
{
logerror.Error(message);
}
else
{
logerror.Error(message, e);
}
}
}
5、主程序调用:(我这个是以接口的形式访问,可以写在控制台里)
/// <summary>
/// 首页
/// </summary>
/// <returns></returns>
[HttpGet]
public string Index()
{
LogHelper.WriteLogInfo("正常日志");
LogHelper.WriteLogError("错误日志");
return "OK";
}