log4net 自定义level

第一步:新建一个类来定义level

  public static class SyncLevel
    {
        public static readonly log4net.Core.Level SYNCLevel = new log4net.Core.Level(50000, "SYNC"); 

        public static void Sync(this ILog log, string message)
        {
            log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
                SYNCLevel, message, null);
        }

        public static void SyncFormat(this ILog log, string message, params object[] args)
        {
            string formattedMessage = string.Format(message, args);
            log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
                SYNCLevel, formattedMessage, null);
        }
    }

第二步:在log4net加载配置前,注册定义的level


        static void Main(string[] args)
        {
            log4net.LogManager.GetRepository().LevelMap.Add(Cls.SyncLevel.SYNCLevel);
            log4net.Config.XmlConfigurator.Configure();

第三步:配置文件中引入:

 <!--按日志容量分割日志文件 10KB一个-->
    <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
      <!--是否续写-->
      <param name="AppendToFile" value="true"/>
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock"/>
      <param name="StaticLogFileName" value="true"/>
      <!--按照文件的大小进行变换日志文件-->
      <param name="RollingStyle" value="Size"/>
      <param name="File" value="logs/sync/sync.log"/>
      <!--单个文件最大数量 好像只有在 按Size分割时有效-->
      <param name="MaximumFileSize" value="10240KB"/>
      <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效-->
      <param name="MaxSizeRollBackups" value="20000"/>
      <param name="StaticLogFileName" value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n"/>
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter">
        <acceptOnMatch value="true" />
        <levelToMatch value="SYNC" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、概述 log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。 2、一个简单的使用实例 第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。 第二步:程序启动时读取log4net的配置文件。 如果是CS程序,在根目录的Program.cs中的Main方法中添加: log4net.Config.XmlConfigurator.Configure(); 如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加: log4net.Config.XmlConfigurator.Configure(); 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句: [assembly: log4net.Config .XmlConfigurator()] 也可以使用自定义的配置文件,具体请参见4.4 关联配置文件。 第三步:修改配置文件。如果是CS程序,则在默认的App.config文件(没有新建一个)中添加内容;如果是BS程序,则添加到Web.config文件中,添加内容一样,这里不再列出。 App.config文件添加内容如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <root> <level value="WARN" /> <appender-ref ref="LogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> <logger name="testApp.Logging"> <level value="DEBUG"/> </logger> <appender name="LogFileAppender" type="log4net.Appender.FileAppender" > <param name="File" value="log-file.txt" /> <param name="AppendToFile" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="Header" value="[Header] "/> <param name="Footer" value="[Footer] "/> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> </log4net> </configuration> 第四步:在程序使用。 log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器 log.Info(DateTime.Now.ToString() + ": login success");//写入一条新log 这样就将信息同时输出到控制台和写入到文件名为“log-file.txt”的文件中,其中“log-file.txt”文件的路径是当前程序运行所在目录;也可以定义为绝对路径,配置如: <param name="File" value="C:/log-file.txt" />就写入C盘根目录下log-file.txt文件中
Log4j2是一个灵活的日志框架,允许用户自定义日志输出格式(layout)。以下是自定义Log4j2 layout的步骤: 1. 创建自定义layout类,该类应继承AbstractStringLayout,并实现toSerializable方法。该方法接受一个LogEvent对象,将其转换为字符串格式并返回。 示例代码如下: ```java @Plugin(name = "CustomLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true) public class CustomLayout extends AbstractStringLayout { protected CustomLayout() { super(StandardCharsets.UTF_8); } public String toSerializable(LogEvent event) { // 自定义日志输出格式的实现代码 return null; } @PluginFactory public static CustomLayout createLayout(@PluginAttribute(value = "pattern") String pattern) { return new CustomLayout(); } } ``` 2. 在log4j2.xml文件中添加自定义layout的配置,例如: ```xml <Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <CustomLayout/> </Console> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> ``` 在以上配置中,我们将自定义的layout作为Console appender的子元素,并命名为CustomLayout。 3. 在代码中使用自定义layout,例如: ```java private static final Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME); public static void main(String[] args) { logger.info("Hello, world!"); } ``` 以上是自定义Log4j2 layout的简单步骤,您可以根据实际需求自定义不同的layout,输出不同的日志格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值