java日志框架配置,java日志框架系列(3):logback框架配置详解

1.Logback配置

1.配置步骤及默认配置

logback即可以通过编程式配置,也可以通过xml的形式配置。

logback配置步骤:

1. 尝试在 classpath 下查找文件 logback-test.xml;

2. 如果文件不存在,则查找文件 logback.xml;

3. 如果两个文件都不存在,logback 用 BasicConfigurator 自动对自己进行配置(默认配置),这会导致记录输出到控制台。

注意:当配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurator , 创 建一 个 最小 化配 置 。最 小化 配置 由 一个 关联 到 根 logger 的ConsoleAppender 组成。输出用模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}- %msg%n 的 PatternLayoutEncoder 进行格式化。还有,根 logger 默认级别是 DEBUG。

2.xml文件进行配置

在此通过xml文件创建一个上一小节中最小化配置,并将xml文件放到classpath中,代码如下:

%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

3.自动打印警告和错误消息

示例:打印logback的内部信息状态

1 packagelogback;2 importorg.slf4j.Logger;3 importorg.slf4j.LoggerFactory;4 importch.qos.logback.classic.LoggerContext;5 importch.qos.logback.core.util.StatusPrinter;6 public classDemo2 {7 private static Logger logger=LoggerFactory.getLogger(Demo2.class);8 public static voidmain(String[] args) {9 //TODO Auto-generated method stub10 //获得logback的logger上下文

11 LoggerContext context=(LoggerContext) LoggerFactory.getILoggerFactory();12 //打印内部的日志:context找配置文件的过程,以及最终的配置

13 StatusPrinter.print(context);14 logger.info("enter application.");15 //Foo foo=new Foo();16 //foo.doIt();

17 logger.info("exit application.");18 }19 }

如果一切顺利的话,控制台会输出以下内容:

14:17:33,156 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]14:17:33,157 |-INFO in ch.qos.logback.classic.LoggerContext[default] -Could NOT find resource [logback.groovy]14:17:33,157 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/E:/code/myeclipse_workspace/spring_heima_video/logback/bin/logback.xml]14:17:33,237 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction -debug attribute not set14:17:33,237 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]14:17:33,246 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -Naming appender as [STDOUT]14:17:33,252 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for[encoder] property14:17:33,310 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction -Setting level of ROOT logger to DEBUG14:17:33,310 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction -Attaching appender named [STDOUT] to Logger[ROOT]14:17:33,311 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction -End of configuration.14:17:33,312 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@198e2867 -Registering current configuration as safe fallback point14:17:33.318 [main] INFO logback.Demo2 -enter application.14:17:33.321 [main] INFO logback.Demo2 -exit application.

总结一下:在代码中可以通过ch.qos.logback.core.util.StatusPrinter对象方便的获得logback框架内部的状态。在配置文件中同样可以达到获得logback框架内部状态的这种效果,方法是设置configuration标签的debug属性为true;请注意debug属性只与状态数据有关,它不影响logback的配置,更不会影响记录级别。

注意:

把 configuration 元素的 debug 属性设为 true 后,会输出状态信息,但是前提是:

1. 找到了配置文件;

2. 配置文件是格式化良好的 XML。

如果其中任一条件未满足,Joran 就会因为配置文件不可读而无法读取 debug 属性。如果找到了配置文件,但却不是格式化良好的,那么 logback 会检测出错误并把内部状态打印到控制台。然而,如果找不到配置文件,由于这不是个严重的错误,logback 不会自动打印状态数据。

4.配置文件修改后自动重新加载

如果设置成自动重新加载,logback-classic 会扫描配置文件里的变化,并且当发生变化后进行重新配置。设置方法是设 configuration 元素的 scan 属性为 true。

注意:内部实现是这样的,当设置扫描属性为 true 时,会安装一个叫 ReconfigureOnChangeFilter的 TurboFilter。每次调用 logger 的打印方法时,都会进行扫描。

比如,当名为 myLogger 的logger 执行“myLogger.debug("hello");”时,如果scan属性为true,则ReconfigureOnChangeFilter会被调用。而且,即使 myLogger 的 debug 级别被禁用了,仍然会调用上述过滤器。

5.直接调用JoranConfigurator

Logback 依赖 Joran,Joran 是 logback-core 的一部分,是个配置类库。Logback 的默认配置机制是调用JoranConfigurator 对classpath上的默认配置文件进行处理。不管出于什么理由,如果你想重新实现 logback 的默认配置机制的话,你可以直接调用 JoranConfigurator。

6.查看状态消息

Logback 把内部数据放在一个 StatusManager 对象里,并通过 LoggerContext 访问。

StatusManager 通过 logback 上下文来访问所有数据对象。为把内存占用保持在合理的范围内,默认的 StatusManager 实现将状态消息按头和尾两部分存储。头部存储开始的 H 条状态消息,尾部存储后面的 T 条消息。现在的 H=T=150,将来或许会改变。

要想在web程序中实现上述功能,可以在WEB-INF/web.xml中添加如下内容:

ViewStatusMessages

ch.qos.logback.classic.ViewStatusMessagesServlet

ViewStatusMessages

/lbClassicStatus

通过浏览器查看表格形式的logback内部状态信息的网址为:http://host/yourWebapp/lbClassicStatus。

7.监听状态消息

你也可以为 StatusManager 附加一个 StatusListener,这样就能立即对状态消息作出响应,尤其对那些 logback 配置完成之后的消息。注册一个状态监听器可以方便地实现对 logback内部状态的无人监管。

logback有一个名称为OnConsoleStatusListener的StatusListener接口实现,可以把状态消息打印到控制台。

实例1:演示如何为StatusListener注册一个OnConsoleStatusListener实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值