1. 首先要下载 log4net.2.0.8 组件Dll 引用 放在自己的项目中 , 在自己的web项目中找到 Global.asax文件Application_Start 方法中 加载你的 log4net.config 日志配置文件
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("/Config/Log4Net.config")));
}
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="AdoNetAppender_file" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
<param name= "File" value= "Log\\"/>
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--记录日志写入文件时,不锁定文本文件-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--Unicode编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="-1" />
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "365" />
<!--日志文件名是否是固定不变的(是否只写到一个文件中)-->
<param name= "StaticLogFileName" value= "false" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]日志文件名格式为:2008-08-31.log -->
<param name= "DatePattern" value= "yyyy-MM-dd".log""/>
<!--<param name= "DatePattern" value= "yyyy-MM/yyyy-MM-dd".log""/>-->
<!--每个文件的大小。只在[混合方式与文件大小方式]下使用,超出大小的在文件名后自动增加1重新命名-->
<param name="maximumFileSize" value="500KB" />
<!--记录的格式。-->
<layout type="log4net.Layout.PatternLayout">
<!--
%d, %date :表示当然的时间
%p, %level :表示日志的级别
%c, %logger :表示日志产生的主题或名称,通常是所在的类名,便于定位问题
%m, %message :表示日志的具体内容
%n, %newline :换行
%exception :表示异常信息
-->
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m %logger %exception %n" />
</layout>
</appender>
<logger name="SystemLog" additivity="true">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender_file" />
</logger>
</log4net>
</configuration>
2.Log4Net实体类
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UtilityFactory.UtilityRoom
{
public class Log4Net
{
private Log4Net()
{
}
public static readonly ILog log = LogManager.GetLogger("SystemLog");
public static void Info(object msg)
{
if (log.IsInfoEnabled)
{
log.Info(JsonUtility.SerializeObject(msg));
}
}
public static void Info(string title, object msg)
{
if (log.IsInfoEnabled)
{
log.Info(title + ": " + JsonUtility.SerializeObject(msg));
}
}
public static void Info(string msg)
{
if (log.IsInfoEnabled)
{
log.Info(msg);
}
}
public static void Warn(string msg)
{
if (log.IsWarnEnabled)
{
log.Warn(msg);
}
}
public static void Debug(object msg)
{
if (log.IsDebugEnabled)
{
log.Debug(JsonUtility.SerializeObject(msg));
}
}
public static void Debug(string msg)
{
if (log.IsDebugEnabled)
{
log.Debug(msg);
}
}
public static void Debug(string msg, Exception ex)
{
if (log.IsDebugEnabled)
{
log.Debug(msg, ex);
}
}
public static void Error(string msg, object obj, Exception ex)
{
if (log.IsErrorEnabled)
{
log.Error(msg + " " + JsonUtility.SerializeObject(obj), ex);
}
}
public static void Error(string msg, Exception ex)
{
if (log.IsErrorEnabled)
{
log.Error(msg, ex);
}
}
public static void Fatal(string msg, Exception ex)
{
if (log.IsFatalEnabled)
{
log.Fatal(msg, ex);
}
}
}
public class JsonUtility
{
/// <summary>
/// 将对象序列化为JSON格式
/// </summary>
/// <param name="obj">对象</param>
/// <returns>json字符串</returns>
public static string SerializeObject(object obj)
{
if (obj == null)
{
return string.Empty;
}
return JsonConvert.SerializeObject(obj);
}
}
}
3.调用
Log4Net.Info('记录日志!!!');