Java日志系统

x33g5p2x  于2021-11-21 转载在 Java  
字(2.2k)|赞(0)|评价(0)|浏览(246)

常见的日志框架

JUL

基本组件

用户使用Logger来进行日志的记录,Logger可以持有多个处理器Handler
(日志的记录使用的是Logger,日志的输出使用的是Handler)
1.自定以日志级别时,记录器和处理器同时设置才生效
2.handler可以时consleHandler和fileHandler,输出到控制台和文件中
3.日志输出的格式可以simpleFormatter设置(logger.addHandler,handler.setFormatter)
4.单例获得Logger logger = logMannger.getLogger("")//参数为类的全路径名,不能new因为是protect的

父子关系

作用:
父亲所做的设置,也能够同时作用于儿子。
对logger1做日志打印相关的设置,然后我们使用logger2进行日志的打印。

配置文件

上面都是编码的形式配置。
默认的配置文件在jre下lib下logging.properties。

文件打印默认是覆盖形式,追加时在配置文件中加入配置
java.util.logging.FileHandler.append = true

Lockback

配置文件

1.配置文件的通用属性

2.Appender:输出的位置
2.1控制台

2.2输出文件

2.3输出html格式

3.日志记录器,里面引入对应的appender

3.1自定义logger

4.日志拆分和归档压缩

5.过滤器

6.异步日志

补充

Log4j

基本组件

Log4j主要由Loggers (日志记录器)、Appenders(输出控制器)和Layout(日志格式化器)组成。
Loggers控制日志的输出以及输出级别(JUL做日志级别Level)
Appenders 指定日志的输出方式(输出到控制台、文件等)
Layout控制日志信息的输出格式。

1.日志级别

关于日志级别信息,例如DEBUG、INFO、WARN、ERROR…级别是分大小的,DEBUG<INFO <WARN <ERROR,分别用来指定这条日志信息的重要程度,Log4j输出日志的规则是:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR级别的日志信息都会输出,而级别比 INFO低的DEBUG则不会输出。

2.Appenders

记录日志以及定义日志的级别仅仅是Log4j的基本功能,Log4j日志系统还提供许多强大的功能,比如允许把日志输出到不同的地方,如控制台(Console)、文件(Files)等,可以根据天数或者文件大小产生新的文件,可以以流的形式发送到其它地方等等。

常见的Appender:
ConsoleAppender 将日志输出到控制台
FileAppender 将日志输出到文件中
DailyRollingFileAppender 将日志输出到一个日志文件,并且每天输出到一个新的文件
RollingFileAppender 将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件。

3.Layout

用户希望根据自己的喜好格式化自己的日志输出,Log4j可以在Appenders 的后面附加Layouts来完成这个功能。Layouts提供四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式。

常见的Layout:
HTTMLayout 以httm格式输出
SimpleLayout 简单的格式输出,默认Info级别的
PatternLayout 自定义的格式

配置文件

配置文件需要配置Logger,Appernder,Layout。Log4j有很多形式的配置文件,主要使用的是log4j.properties。加载时从类路径下找log4j.properties文件,对于maven项目,就是resources包下。
如何加载配置文件以及配置什么内容?
通过查看PropertiesConfigurator类中的几个常量

输出到文件的配置文件
不管有多少种appender,就在第一行,添加,不添加就不生效

3.按照文件大小拆分日志文件

日志文件的大小,和日志文件的个数。比如1MB,5
文件超过1MB,就会生成第二个文件,知道第五个,再多就是新的覆盖旧的

4.按照时间拆分

该例精确到s了

5.输出到数据库

最后一行sql应该是一行

6.配置根节点logger

自定义logger的目的是为了区分不同系统的日志信息,比如我们自己的输出加自己的名字,第三方的加其他标识

Log4j2

日志级别

log4j2提供了和log4j相同的日志级别

配置文件

输出到控制台

输出到文件
(全局属性)

(增加Appenders)

(loggers引用)

日志拆分

异步日志

一般用后者

实例:

(使用AsyncAppender的方式)

(使用AsyncLogger的方式全局异步)

(使用AsyncLogger的方式混合异步)

在这个包下的类以及子包的类才是异步,其他包还是同步

log4j与slf4j配合

日志门面

JCL

Slf4j

slf4j绑定nop

slf4j绑定log4j

适配器

当绑定多个日志实现时(导入了多个日志框架的依赖),会出现警告信息。

需求

使用桥接器步骤:

相关文章

微信公众号

最新文章

更多