首先新建一个log4net.config文件,配置如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <!-- 信息日志类 --> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="AdoNetAppender" /> <appender-ref ref="InfoAppender" /> </logger> <!-- 警告日志类 --> <logger name="logwarn"> <level value="ALL" /> <appender-ref ref="WarnAppender" /> </logger> <!-- 错误日志类--> <logger name="logerror"> <level value="ALL" /> <appender-ref ref="AdoNetAppender" /> <appender-ref ref="ErrorAppender" /> </logger> <!-- 异常日志类--> <logger name="logfatal"> <level value="ALL" /> <appender-ref ref="AdoNetAppender" /> <appender-ref ref="FatalAppender" /> </logger> <!-- 文件保存日志 --> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径: 兼容相对路径和绝对路径 --> <param name= "File" value= "Log\info\"/> <!--是否是向文件中追加日志--> <param name= "AppendToFile" value= "true"/> <!--保留天数--> <param name= "MaxSizeRollBackups" value= "10"/> <!--日志文件名是否固定不变的--> <param name= "StaticLogFileName" value= "false"/> <!--日志文件名格式为:20170112.log--> <param name= "DatePattern" value= "yyyyMMdd".log""/> <!--日志根据日期滚动--> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-5p %m%n" /> </layout> </appender> <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Log\warn\"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyyMMdd".log""/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-5p %m%n" /> </layout> </appender> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Log\error\"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyyMMdd".log""/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-5p %m%n" /> </layout> </appender> <appender name="FatalAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Log\fatal\"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyyMMdd".log""/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-5p %m%n" /> </layout> </appender> <!-- 控制台输出日志 --> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="Info" /> <foreColor value="Green" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n%date{HH:mm:ss.fff} %-5level %m" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Info" /> <param name="LevelMax" value="Fatal" /> </filter> </appender> <!-- 数据库保存 --> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="1" /> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="data source=.;initial catalog=test_log;integrated security=true" /> <commandText value="INSERT INTO log([userid],[level],[ip],[msg],[exception]) VALUES (@userid,@level,@ip, @msg,@exception)" /> <parameter> <parameterName value="@userid"/> <dbType value="Int64"/> <size value="64"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%X{userid}"/> </layout> </parameter> <parameter> <parameterName value="@level" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@ip" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%X{ip}" /> </layout> </parameter> <parameter> <parameterName value="@msg" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value="@exception" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender> </log4net> </configuration>
新建一个系统日志通用类:LogHelper
using log4net; using log4net.Config; using log4net.Repository; using System; using System.Collections.Generic; using System.IO; using System.Text; namespace Core.Net.Common.Core.Net.Core.Nlog4 { /// <summary> /// 系统日志记录通用类 /// </summary> public class LogHelper { private const string repositoryName = "NETCoreRepository"; private const string configFile = "log4net.config"; private static ILoggerRepository repository { get; set; } private static readonly ILog _loginfo = LogManager.GetLogger(repositoryName, "loginfo"); private static readonly ILog _logerror = LogManager.GetLogger(repositoryName, "logerror"); private static readonly ILog _logwarn = LogManager.GetLogger(repositoryName, "logwarn"); private static readonly ILog _logfatal = LogManager.GetLogger(repositoryName, "logfatal"); public static void Configure() { repository = LogManager.CreateRepository(repositoryName); XmlConfigurator.Configure(repository, new FileInfo(configFile)); } /// <summary> /// 基本信息日志插入 /// </summary> /// <param name="msg"></param> public static void Info(string msg) { _loginfo.Info(msg); } /// <summary> /// 警告信息日志插入 /// </summary> /// <param name="msg"></param> public static void Warn(string msg) { _logwarn.Warn(msg); } /// <summary> /// 错误信息日志插入 /// </summary> /// <param name="msg"></param> public static void Error(string msg) { _logerror.Error(msg); } /// <summary> //异常信息插入 /// </summary> /// <param name="msg"></param> public static void Fatal(string msg) { _logfatal.Fatal(msg); } } }
在ConfigureServices方法中注册:
LogHelper.Configure(); //Nlog4日志
调用:
LogHelper.Error("11111"); LogHelper.Info("11111"); LogHelper.Warn("11111"); LogHelper.Fatal("111111");
查看: