.net 5.0 下记录日志以及日志的配置
1.我们先开始准备一个日志的Helper
2.然后在指定目录下添加配置文件 .XML
using log4net; using log4net.Config; using System; using System.IO; namespace AnnualBill.Logger { public class LoggerHelper { #region Fields private static readonly ILog logger; #endregion #region Constructors static LoggerHelper() { if (logger == null) { var repository = LogManager.CreateRepository("MixdoRepository"); //log4net从log4net.config文件中读取配置信息 var log4netConfig = new FileInfo("App_Data/log4net.config.xml"); XmlConfigurator.Configure(repository, log4netConfig); logger = LogManager.GetLogger(repository.Name, "InfoLogger"); } } #endregion #region Utilities /// <summary> /// 普通日志 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public static void Info(string message, Exception exception = null) { if (exception == null) logger.Info(message); else logger.Info(message, exception); } /// <summary> /// 告警日志 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public static void Warn(string message, Exception exception = null) { if (exception == null) logger.Warn(message); else logger.Warn(message, exception); } /// <summary> /// 错误日志 /// </summary> /// <param name="message"></param> /// <param name="exception"></param> public static void Error(string message, Exception exception = null) { if (exception == null) logger.Error(message); else logger.Error(message, exception); } #endregion } }
<?xml version="1.0" encoding="utf-8"?> <log4net> <!-- Define some output appenders --> <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender"> <file value="log.txt" /> <!--追加日志内容--> <appendToFile value="true" /> <!--防止多线程时不能写Log--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--可以为:Once|Size|Date|Composite--> <!--Composite为Size和Date的组合--> <rollingStyle value="Composite" /> <!--当备份文件时,为文件名加的后缀--> <datePattern value="yyyyMMdd.TXT" /> <!--日志最大个数,都是最新的--> <!--rollingStyle节点为Size时,只能有value个日志--> <!--rollingStyle节点为Composite时,每天有value个日志--> <maxSizeRollBackups value="20" /> <!--可用的单位:KB|MB|GB--> <maximumFileSize value="3MB" /> <!--置为true,当前最新日志文件名永远为file节中的名字--> <staticLogFileName value="true" /> <!--输出级别在INFO和ERROR之间的日志--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ALL" /> <param name="LevelMax" value="FATAL" /> </filter> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/> </layout> </appender> <root> <priority value="ALL"/> <level value="ALL"/> <appender-ref ref="rollingAppender" /> </root> </log4net>
这里再添加一种配置方式
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <appender name="ElkAppender" type="log4net.Appender.SocketAppender, Elk.Appender"> <!--远程Logstash服务地址--> <!--RemoteAddress value="xxx.xxx.xx.xxx" / --> <RemotePort value="4569" /> <!--socket地址族,当前为ipv4--> <AddressFamily value="InterNetwork" /> <SocketType value="Stream" /> <ProtocolType value="Tcp" /> <!--连接失败的重试次数--> <ConAttemptsCount value="5" /> <!--连接失败重试的间隔时间--> <ConAttemptsWaitingTimeMilliSeconds value="3000" /> <!--启用线程池发送消息--> <UseThreadPoolQueue value="true" /> <!--格式化为json--> <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json"> <member value="appname|apos_member_service" /> <member value="env:env" /> <member value="level:level" /> <member value="logger:logger" /> <member value="message:messageObject" /> <member value="exception:exception" /> <member value="traceId:traceId" /> </layout> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" /> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file type="log4net.Util.PatternString" value="App_Data\log\%date{yyyy-MM-dd}.Info.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <!--备份log文件的个数最多10个--> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <!--指定log的格式--> <conversionPattern value="[%date] Thread:%thread %message%newline" /> </layout> </appender> <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file type="log4net.Util.PatternString" value="App_Data\log\%date{yyyy-MM-dd}.Debug.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%date] Thread:%thread %message%newline" /> </layout> </appender> <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file type="log4net.Util.PatternString" value="App_Data\log\%date{yyyy-MM-dd}.Warn.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%date] Thread:%thread %message%newline" /> </layout> </appender> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="Encoding" value="utf-8" /> <file type="log4net.Util.PatternString" value="App_Data\log\%date{yyyy-MM-dd}.Error.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="100" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%date] Thread:%thread %message%newline" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="ElkAppender"/> </root> <logger name="infologger"> <level value="INFO" /> <appender-ref ref="InfoAppender" /> </logger> <logger name="debuglogger"> <level value="DEBUG" /> <appender-ref ref="DebugAppender" /> </logger> <logger name="warnlogger"> <level value="WARN" /> <appender-ref ref="WarnAppender" /> </logger> <logger name="errorlogger"> <level value="ERROR" /> <appender-ref ref="ErrorAppender" /> </logger> </log4net> </configuration>
浙公网安备 33010602011771号