如何使用Java日志框架的logback-创新互联
这篇文章主要讲解了如何使用Java日志框架的logback,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
成都创新互联公司从2013年创立,先为白塔等服务建站,白塔等地企业,进行企业商务咨询服务。为白塔企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。为什么使用logback
记得前几年工作的时候,公司使用的日志框架还是log4j,大约从16年中到现在,不管是我参与的别人已经搭建好的项目还是我自己主导的项目,日志框架基本都换成了logback,总结一下,logback大约有以下的一些优点:
- 内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升
- logback非常自然地直接实现了slf4j,这个严格来说算不上优点,只是这样,再理解slf4j的前提下会很容易理解logback,也同时很容易用其他日志框架替换logback
- logback有比较齐全的200多页的文档
- logback当配置文件修改了,支持自动重新加载配置文件,扫描过程快且安全,它并不需要另外创建一个扫描线程
- 支持自动去除旧的日志文件,可以控制已经产生日志文件的大数量
总而言之,如果大家的项目里面需要选择一个日志框架,那么我个人非常建议使用logback。
logback加载
我们简单分析一下logback加载过程,当我们使用logback-classic.jar时,应用启动,那么logback会按照如下顺序进行扫描:
- 在系统配置文件System Properties中寻找是否有logback.configurationFile对应的value
- 在classpath下寻找是否有logback.groovy(即logback支持groovy与xml两种配置方式)
- 在classpath下寻找是否有logback-test.xml
- 在classpath下寻找是否有logback.xml
以上任何一项找到了,就不进行后续扫描,按照对应的配置进行logback的初始化,具体代码实现可见ch.qos.logback.classic.util.ContextInitializer类的findURLOfDefaultConfigurationFile方法。
当所有以上四项都找不到的情况下,logback会调用ch.qos.logback.classic.BasicConfigurator的configure方法,构造一个ConsoleAppender用于向控制台输出日志,默认日志输出格式为"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"。
logback的configuration
logback的重点应当是Appender、Logger、Pattern,在这之前先简单了解一下logback的
- scan:当scan被设置为true时,当配置文件发生改变,将会被重新加载,默认为true
- scanPeriod:检测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认为毫秒,当scan=true时这个值生效,默认时间间隔为1分钟
- debug:当被设置为true时,将打印出logback内部日志信息,实时查看logback运行信息,默认为false
先从最基本的
- name:用来指定受此logger约束的某一个包或者具体的某一个类
- level:用来设置打印级别,五个常用打印级别从低至高依次为TRACE、DEBUG、INFO、WARN、ERROR,如果未设置此级别,那么当前logger会继承上级的级别
- additivity:是否向上级logger传递打印信息,默认为true
public LoggerContext() { super(); this.loggerCache = new ConcurrentHashMap(); this.loggerContextRemoteView = new LoggerContextVO(this); this.root = new Logger(Logger.ROOT_LOGGER_NAME, null, this); this.root.setLevel(Level.DEBUG); loggerCache.put(Logger.ROOT_LOGGER_NAME, root); initEvaluatorMap(); size = 1; this.frameworkPackages = new ArrayList (); }
本文标题:如何使用Java日志框架的logback-创新互联
文章起源:http://abwzjs.com/article/cdjocd.html