添加引用
项目中添加Nuget引用:Log4net
配置Config
右键打开项目的Web.Config文件,在Configuration节点下面添加下面的内容
<!--Log4Net配置开始-->
<log4net>
<root>
<level value="ERROR" />
</root>
<logger name="logerror">
<level value="ERROR" />
<appender-ref ref="SysAppender" />
</logger>
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="payAppender" />
</logger>
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!-- 日志文件存放位置-->
<param name="File" value="App_Data/Log/LogError/" />
<!-- 将日志信息追加到已有的日志文件中-->
<param name="AppendToFile" value="true" />
<!-- 指定按日期切分日志文件 -->
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd".txt"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
<param name="ConversionPattern" value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n跟踪描述:%message%newline %n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
<appender name="payAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="App_Data/Log/LogInfo/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd".txt"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
<param name="ConversionPattern" value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n跟踪描述:%message%newline %n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
</log4net>
<!--Log4Net配置结束-->
< level>为日志等级;由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL;比如定义级别为,则INFO级别向下的级别,比如DEBUG日志将不会被记录;如果没有定义LEVEL的值,则缺省为DEBUG
例:配置了一个logger为info级别,那么在调用下面的loginfo.info(),loginfo.Warn()都会被记录,但是loginfo.debug()就不会
< appender>为输出媒介,常用有AdoNetAppender(输出到数据库),AspNetTraceAppender(输出到ASP.NET日志),ConsoleAppender(输出到console),BufferingForwardingAppender(按信息条数输出到console),ColoredConsoleAppender/ManagedColoredConsoleAppender(根据设定颜色输出到console),EventLogAppender(输出到操作系统应用程序日志),FileAppender(输出到文件),RollingFileAppender(有回收的输出到文件),SmtpAppender(输出到邮件),RemotingAppender(远程输出)
修改Global.asax.cs的启动方法
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//加入代码,注册Log4
log4net.Config.XmlConfigurator.Configure();
}
增加LogHelper.cs类
namespace EVMTest.App_Start
{
public class Log4Helper
{
public Log4Helper() { }
//读取loginfo配置的日志格式
public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
//读取logerror配置的日志格式
public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
//public static void SetConfig()
//{
// log4net.Config.XmlConfigurator.Configure();
//}
//public static void SetConfig(FileInfo configfile)
//{
// log4net.Config.XmlConfigurator.Configure(configfile);
//}
public static async void WriteLogAsy(string s)
{
await Task.Run(() =>
{
//Thread.Sleep(10000);
if (loginfo.IsInfoEnabled)
loginfo.Info(s);
});
}
public static async void WriteLogAsy(string s, Exception e)
{
await Task.Run(() =>
{
//Thread.Sleep(10000);
if (logerror.IsErrorEnabled)
logerror.Error(s, e);
});
}
////////////////////////////
}
}