springboot⽇志输出到⽂件
今天来谈⼀谈⽇志,主要是说⼀说springboot的⽇志,因为最近在学习springboot。⾸先在写代码的时候,要养成记⽇志的习惯,这点真的很重要,因为之前吃了很多亏。过去我对⽇志很不在意,该有的⽇志没有,不该有的⽇志却随意输出。新换的⼯作,上司对⽇志有严格的要求,也就慢慢开始注意了。
⼀般⽽⾔,⼀个接⼝或者说⼀段程序,其⼊⼝要有⽇志,记录传⼊的数据是什么;部分重要的处理逻辑要有⽇志输出;程序出⼝也要有⽇志,记录其最终的处理结果。这样在解决⽣产上的问题时,可以很快的定位问题的位置,是传⼊数据的问题还是我们代码逻辑写错了,总⽐凭空想象的好,要相信计算机,⽇志是不会骗⼈的。
还有⼀点,在⽣产上严禁使⽤System.out输出,性能太低,原因是System.out输出会导致线程等待(同步),⽽使⽤Logger输出线程不等待⽇志的输出(异步),⽽继续执⾏。
接下来看⼀看springboot的⽇志配置,说⼀下把⽇志记录到⽂件中的配置⽅式。
⼯具/原料
springboot
⽇志
static局部变量和全局变量
⽅法/步骤
1. springboot推荐的⽇志类库是slf4j、⽇志系统为logback,确实我回头⼀看项⽬中使⽤的都是slf4j,说明这个东西确实有他的优点。
上⽂中也说了⼀点,slf4j有个接⼝叫Logger,提供了丰富的⽇志输出⽅法,包含了所有⽇志级别的输出。使⽤⽅式也是特别的简单,⽤slf4j的⼯⼚类获取⼀个logger ,然后就可以输出⽇志了,默认情况下,⽇志只会输出到控制台。
2. 通过在application.properties⽂件中配置logging.file、logging.path可以控制⽇志⽂件的输出路径和⽂件名。
不过有些细节需要注意,否则配置不⽣效,我测试了⼏种情况。
3. 如果,两者都配置了:logging.file=myLog.log、logging.path=D:/data/mylog,注意windos的路径(后⾯配置⽂件中也是/),
此时并不会在d盘下⽣成⽇志⽂件,只会在项⽬的根⽬录下创建⼀个myLog.log的⽂件(workspace中,此项⽬的根⽬录)。
其原因是,没有l配置⽂件,系统只认识logging.file,不认识logging.path。
4. 所以要配置l,spring boot会默认加载此⽂件,为什么不配置l,因为l会先
properties是什么文件application.properties加载,⽽l会后于application.properties加载,这样我们在application.properties⽂中设置⽇志⽂件名称和⽂件路径才能⽣效。
5. 且看l的配置详情。注意${LOG_PATH}和${LOG_FILE}分别是获取配置⽂件中的路径和⽂件名称,必须使⽤这两excel教程书电子版
个全局的配置去获取。然后重启项⽬,发现在配置的⽬录下,有了相应的⽇志⽂件。
6. ⽇志⽂件的配置结构:
(1)FILE_LOG_PATTERN:⽇志输出格式变量,在控制台输出和⽂件中输出的append中都引⽤了此变量。(2)consoleLog:定义⼀个控制台的appender(3)fileLog:定义⼀个⽇志⽂件的appender,这就是⽂件输出的详细配置,<File>是⽇志⽂件的输出地址:必须要为${LOG_PATH}/${LOG_FILE},这样我们在application.properties中的配置才有效。level标签:如果我们设置了level为info,只会输出info的⽇志信息,其他⽇志级别的⽇志就会过滤掉,建议不配置level属性。
(4)logger:其name就是项⽬中对应的包路径,appender-ref是appender的引⽤,在本配置⽂件中,意思就是
二维数组的矩阵是什么样的
标签level="debug"是设置⽇志级别:作⽤是debug级别及其以上级别的⽇志会输出(debug、info、warn、error,,,),注意此处的level是⼀个下线,⽐其⽇志级别⾼的⽇志信息也会输出,很重要。
weldabilityadditivity="false"是配置此logger是否提交给其他的logger或者root节点,如果true,则root也会执⾏或
html的input的type属性者其他的可以拦截到的logger节点,且logger的level优先级⾼;否则不会执⾏,在本配置⽂件中即控制台不会输出MySpringBootTest包下⽂件的⽇志。
(5)root:根节点,在l中只引⽤了控制台⽇志输出配置,不会输出到⽂件,如果想输出到⽂件,可以写再写⼀个引⽤。level=info,在控制台输出into级别及其以上级别的⽇志。会拦截所有包下的⽇志,但是其输出会受到logger的影响,即注意logger中的additivity属性,如果为false,MySpringBootTest包下的⽇志不会输出到控制台。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。