相关文章推荐
痴情的啄木鸟  ·  听说你没法在JRE中使用arthas?不,你 ...·  2 周前    · 
潇洒的猴子  ·  如何为新交叉表添加数据并配置样式_智能商业分 ...·  1 月前    · 
没有腹肌的地瓜  ·  JAVA将Object对象转byte数组 ...·  7 月前    · 
慈祥的黄豆  ·  How to remove illegal ...·  1 年前    · 
力能扛鼎的豌豆  ·  大杀器Bodymovin和Lottie:把A ...·  1 年前    · 
Code  ›  log4net组件_logmanager.getrepository().getappenders() 返回数组为0
log log4net
https://blog.csdn.net/hhhhhhenrik/article/details/121235229
爱健身的瀑布
1 年前
  • 简介
    • layout
      • PatternLayout
    • 特征
      • 输出到多个日志
      • 分层日志架构
      • XML 配置
        • BS端
        • CS端(wpf)
          • 编程方式配置
          • 嵌入单独XML配置文件
          • 嵌入其他XML配置文件
        • 动态配置
          • 动态配置文件存放路径
        • 日志上下文

        官方文档
        Log4net 有三个主要组件:logger, appenders 和 layouts。
        在这里插入图片描述

        layout

        layout文档

        PatternLayout

        使用模式字符串可配置的灵活布局。格式化的结果依赖于 conversion 模式。

        <layout type="log4net.Layout.PatternLayout">
                <!--输出格式-->
                <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
                <conversionPattern value="%date 线程ID:[%thread] %-5level - %message%newline"/>
        </layout>
        
        占位符含义
        %logger输出日志事件的日志器。默认完整打印记录器名称。如果给定了精度说明符,则只会打印记录器名称最右侧组件的相应编号。例:若日志器名为 “a.b.c”,模式为 %logger{2},将输出 “b.c”.
        %date以 local time zone 输出日志事件的日期。推荐使用 log4net 日期格式化器,能得到更好的输出。
        %utcdate输出universal time日期
        %timestamp输出从应用程序启动到日志事件创建所经过的毫秒数。
        %thread等同于(%t),线程名称或线程ID
        %message输出函数调用时传入参数
        %newline等同于(%n),输出换行。
        %method输出发生日志请求时的方法名。警告:产生调用位置信息相当慢。除非执行速度不是问题,否则要避免使用它。
        %%输出一个百分号
        %stacktrace{level}输出日志事件的堆栈跟踪,堆栈跟踪级别说明符可以用大括号括起来
        %property用于输出特定于事件的属性。
        • 支持多种框架
        • 输出到多个日志目标
        • 分层日志架构
        • XML 配置
        • 动态配置
        • 日志上下文
        • 成熟的架构
        • 模块化和可扩展设计
        • 高性能与灵活性

        输出到多个日志

        常用
        log4net.Appender.RollingFileAppender: 将日志事件写入文件系统中的文件。可以配置为基于日期或文件大小限制记录到多个文件。
        log4net.Appender.ConsoleAppender 将日志事件写入应用程序的控制台。事件可能会转到标准我们的流或标准错误流。

        其他
        Appender Config Examples详细介绍
        在这里插入图片描述

        分层日志架构

        XML 配置

        在web.config文件汇总

        CS端(wpf)

        编程方式配置

        (待补充)

        嵌入单独XML配置文件

        (待补充)

        嵌入其他XML配置文件

        在App.config中添加以下代码

        configSetions 元素必须作为 configuration 元素的第一个子元素。否则,运行应用程序时,会报错。

        <configSections>
            <!--log4net配置-->
            <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
          </configSections>
           <log4net>
            <!--定义输出到文件中-->
            <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
            <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
              <!--定义文件存放位置-->
              <!--file可以指定具体的路径 D://logfile.txt。-->
              <!--<file value="D://logs//"/>-->
              <!--如果放在Debug下,当然名字你可以改 -->
              <file value="/logs/log"/>
              <!--是否追加到文件-->
              <appendToFile value="true"/>
              <!--变换的形式为日期-->
              <rollingStyle value="Date"/>
              <!--备份log文件的个数最多10个-->
              <maxSizeRollBackups value="10" />
              <!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->
              <maximumFileSize value="2MB" />
              <!-- 是否使用静态文件名-->
              <param name="StaticLogFileName" value="false" />
              <!--<datePattern value="yyyyMMdd-HH:mm:ss"/>-->
              <datePattern value="yyyy-MM-dd'.log'" />
              <layout type="log4net.Layout.PatternLayout">
                <!--输出格式-->
                <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
                <conversionPattern value="%date 线程ID:[%thread] %-5level - %message%newline"/>
              </layout>
            </appender>
            <!--定义日志的输出媒介-->
              <!--指定将此级别及以上级别的log打印到log文件中-->
              <level value="DEBUG"/>
              <!--文件形式记录日志-->
              <appender-ref ref="RollingFileAppender"/>
            </root>
          </log4net>
        

        动态配置文件存放路径

        在调用函数之前加入以下代码(在构造函数中)

        var repository = LogManager.GetRepository();
        var appenders = repository.GetAppenders();
        var targetApder = appenders.First(p => p.Name == "RollingFileAppender") as RollingFileAppender;//根据名称找到appender
        targetApder.File = "D:/Media/Logs/Cache/";
        targetApder.ActivateOptions();
        

        日志上下文

        目录简介特征输出到多个日志分层日志架构XML 配置BS端CS端(wpf)嵌入其他元素动态配置动态配置文件存放路径日志上下文简介官方文档Log4net 有三个主要组件:logger, appenders 和 layouts。特征支持多种框架输出到多个日志目标分层日志架构XML 配置动态配置日志上下文成熟的架构模块化和可扩展设计高性能与灵活性输出到多个日志常用log4net.Appender.RollingFileAppender: 将日志事件写入文件系统中的文件。可以配置为 https://mvnrepository.com/artifact/log4j/log4j/1.2.16 步骤二:IDEA加入log4j.properties文件 File-&gt;Project Structure 将log4j.... public static void UpdateFolder(string folder) var storedPath = LogManager.GetRepository(); var appenders
        最近处理一个日志功能,用log4net的配置不能完全满足要求,所以在其基础上简单封装了一下,支持以下功能: 1 零配置 内置默认配置,引用dll后不需要添加或修改任何配置文件也可以使用 2 动态指定文件路径和文件名 我们的需求是按请求来源和功能生成多个独立的日志文件,例如 /app编号/功能编号.txt 的结构,需要根据请求动态指定文件名称 3 按日期和大小自动分割文件,满足其...
        <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections...
        ### 回答1: log4net是一个用于.NET环境下的日志记录工具,可以帮助开发人员记录和管理应用程序的日志信息。log4net的配置是非常灵活且功能强大的,下面将详细介绍其配置的几个关键点。 1. Logger(日志记录器):Logger是log4net中最基本的组件,用于定义日志记录器的名称和级别。可以通过配置文件中的logger元素来定义不同的日志记录器,并为每个记录器指定不同的级别。 2. Appender(追加器):Appender是负责将日志信息输出到不同目标的组件,可以将日志输出到控制台、文件、数据库等不同的地方。log4net提供了多种类型的Appender,如ConsoleAppender、RollingFileAppender、AdoNetAppender等,可以根据实际需求选择合适的Appender。 3. Layout(布局):Layout用于定义日志信息的格式。可以通过配置文件中的layout元素来指定日志信息的格式,如时间、级别、线程号、消息等。log4net提供了多种内置的布局模式,也可以通过自定义布局来满足特定的需求。 4. Filter(过滤器):Filter用于对日志信息进行过滤,只输出符合条件的日志。可以通过配置文件中的filter元素来添加不同类型的过滤器,如LevelRangeFilter、LoggerMatchFilter等。过滤器可以根据日志级别、日志名称等条件进行过滤。 5. 日志配置文件:log4net的配置信息通常存放在一个独立的配置文件中,可以使用XML或者属性配置格式。通过配置文件,可以定义不同的logger、appender、layout和filter,以及它们之间的关系和配置参数。 总之,log4net的配置非常灵活,可以根据不同的需求进行定制和扩展。配置的核心是定义不同的logger、appender、layout和filter,并通过配置文件进行管理。通过合理的配置,可以满足不同应用程序的日志记录和管理需求。 ### 回答2: log4net是一个功能强大的日志记录工具,常用于开发中的日志记录和调试。它的配置方式相对来说比较复杂,需要在应用程序的配置文件中进行详细的设置。 首先,在配置文件中,需要先引入log4net命名空间,并设置配置文件的自动加载。接着,需要定义一个root节点,用于指定日志记录的级别和输出格式。例如,可以设置日志级别为DEBUG,表示会记录所有级别的日志,并且可以指定输出到控制台、文件或数据库等。 在根节点下,可以定义多个appender节点,分别对不同的日志进行输出。每个appender节点都需要设置一些基本属性,例如输出方式(ConsoleAppender、FileAppender等)、日志排除级别和日志格式等。可以根据不同的需求定义不同的appender节点。 另外,log4net还支持过滤器功能,可以对日志进行特定的过滤和警告。可以将过滤器节点添加到appender节点下,设置过滤器的类型和属性。例如,可以根据日志级别进行过滤,只记录满足条件的日志。 此外,还可以定义布局器(layout)来格式化日志输出的样式。可以在appender节点下设置布局器节点,指定日志输出的格式。log4net支持多种预定义的布局器,也可以自定义布局器,根据需求灵活设置。 最后,需要在应用程序启动时,调用log4net的配置方法,将配置文件中的设置应用到实际的日志记录中。这样就完成了log4net的配置。 总之,log4net的配置非常灵活,可以根据具体的需求设置不同的输出方式、过滤规则和输出格式。合理地配置log4net可以方便地进行日志记录和调试,提高开发效率。 ### 回答3: log4net是一个开源的日志管理工具,用于在应用程序中记录和管理日志信息。log4net的配置非常灵活,可以根据需求进行调整和定制。 首先,log4net的配置文件是一个XML文件,可以通过读取该文件来配置log4net。配置文件中有几个重要的部分,包括根节点log4net、appender等等。 在根节点log4net中,需要定义一个或多个appender,用于指定日志消息的输出位置。常用的appender有ConsoleAppender、RollingFileAppender、AdoNetAppender等。每个appender都可以设置不同的属性,例如输出格式、输出等级等。 除了appender,还需要定义logger,用于指定日志消息的记录级别和对应的appender。logger有多个级别,包括DEBUG、INFO、WARN、ERROR、FATAL。可以为每个logger设置一个或多个appender,这样就可以根据不同的级别将日志消息输出到不同的位置。 另外,log4net还支持使用过滤器来对日志消息进行过滤和处理。过滤器可以根据日志消息的属性进行判断,从而决定是否记录日志消息或者将其传递给下一个过滤器。 此外,log4net还提供了布局器(layout)的功能,用于格式化输出的日志消息。布局器可以定义输出日志消息的格式和内容,并可以通过占位符来引用日志消息的属性。 最后,在应用程序中使用log4net需要进行初始化和配置。可以通过在应用程序的入口处调用log4net.Config.XmlConfigurator.Configure方法来加载log4net的配置文件。配置文件的路径可以在方法的参数中指定。 总体来说,log4net的配置非常灵活和强大,能够满足各种复杂的日志管理需求。通过合理配置和使用log4net,我们可以方便地记录和管理应用程序的日志信息,从而更好地进行问题追踪和排错。
 
推荐文章
痴情的啄木鸟  ·  听说你没法在JRE中使用arthas?不,你可以!-阿里云开发者社区
2 周前
潇洒的猴子  ·  如何为新交叉表添加数据并配置样式_智能商业分析 Quick BI(Quick BI)-阿里云帮助中心
1 月前
没有腹肌的地瓜  ·  JAVA将Object对象转byte数组 - yvioo - 博客园
7 月前
慈祥的黄豆  ·  How to remove illegal characters so a dataframe can write to Excel_Mangs-Python
1 年前
力能扛鼎的豌豆  ·  大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画 - 知乎
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号