(一)
Log4j API设计为分层结构,其中每一层提供了不同的对象,对象执行不同的任务。这使得设计灵活,根据将来需要来扩展。
有两种类型可用在Log4j的框架对象。
核心对象: 框架的强制对象和框架的使用。
支持对象: 框架和支持体核心对象,可选的对象执行另外重要的任务。
顶级层的Logger,它提供Logger对象。Logger对象负责捕获日志信息及它们存储在一个空间的层次结构。
该层提供其用于格式化不同风格的日志信息的对象。布局层提供支持Appender对象到发布日志信息之前。
布局对象的发布方式是人类可读的及可重复使用的记录信息的一个重要的角色。
下位层提供Appender对象。Appender对象负责发布日志信息,以不同的首选目的地,如数据库,文件,控制台,UNIX系统日志等。
以下是显示Log4J框架的不同组件的虚拟图:
log4j框架的其他重要的对象起到日志框架的一个重要作用:
级别对象定义的任何记录信息的粒度和优先级。有记录的七个级别在API中定义:OFF, DEBUG, INFO, ERROR, WARN, FATAL 和 ALL
过滤对象用于分析日志信息及是否应记录或不用这些信息做出进一步的决定。
一个appender对象可以有与之关联的几个Filter对象。如果日志记录信息传递给特定Appender对象,都和特定Appender相关的Filter对象批准的日志信息,然后才能发布到所连接的目的地。
ObjectRenderer对象是一个指定提供传递到日志框架的不同对象的字符串表示。这个对象所使用的布局对象来准备最后的日志信息。
日志管理对象管理的日志框架。它负责从一个系统级的配置文件或配置类读取初始配置参数。
(三)
log4j.properties文件是一个键 - 值对保存 log4j 配置属性文件。默认情况下,日志管理在CLASSPATH 查找一个名为 log4j.properties 的文件。
根日志记录器的级别定义为DEBUG并连接附加器命名为X到它
设置名为X的附加目的地是一个有效的appender
设置布局的附加器X
以下是 log4j.properties 文件的一个appender X的语法:
# Define the root logger with appender X
log4j.rootLogger = DEBUG, X
# Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender
# Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n
使用上面的语法,我们定义 log4j.properties 文件如下:
根日志记录器(logger)的级别定义为DEBUG并连接附加器命名为FILE
附加器(appender)File是定义为org.apache.log4j.FileAppender并写入到一个名为“log.out”位于日志log目录下
定义的布局模式是%m%n,这意味着每打印日志消息之后,将加上一个换行符
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
需要注意的是log4j支持UNIX风格的变量替换,如 ${variableName}.
使用DEBUG两个追加程序。所有可能的选项有:
TRACE
DEBUG
INFO
WARN
ERROR
FATAL
ALL
这些级别将在 Log4j调试级别 这一文章中解释
Apache的log4j提供Appender对象主要负责打印日志消息到不同的目的地,如控制台,文件,sockets,NT事件日志等等。
每个Appender对象具有与之相关联的不同的属性,并且这些属性表明对象的行为
属性 | 描述 |
---|---|
layout | Appender使用布局Layout 对象和与之相关的格式化的日志记录信息转换模式 |
target | 目标可以是一个控制台,一个文件,或根据附加器的另一个项目 |
level | 级别是必需的,以控制日志消息的过滤 |
threshold | Appender可以有与之独立的记录器级别相关联的级别阈值水平。Appender忽略具有级别低于阈级别的任何日志消息 |
filter | Filter 对象可以分析超出级别的匹配记录信息,并决定是否记录的请求应该由一个特定 Appender 或忽略处理 |
可以通过包括以下方法的配置文件中的下面设置一个 Appender 对象添加到记录器:
log4j.logger.[logger-name]=level, appender1,appender..n
可以编写以XML格式相同的结构如下:
<logger name="com.apress.logging.log4j" additivity="false">
<appender-ref ref="appender1"/>
<appender-ref ref="appender2"/>
</logger>
如果想要添加Appender对象到程序,那么可以使用下面的方法:
public void addAppender(Appender appender);
addAppender()方法添加一个appender到Logger对象。作为示例配置演示,可以添加很多Appender对象到记录器在逗号分隔的列表,每个打印日志信息分离目的地。
我们仅使用一个附加目的地FileAppender在我们上面的例子。所有可能的附加目的地选项有:
AppenderSkeleton
AsyncAppender
ConsoleAppender
DailyRollingFileAppender
ExternallyRolledFileAppender
FileAppender
JDBCAppender
JMSAppender
LF5Appender
NTEventLogAppender
NullAppender
RollingFileAppender
SMTPAppender
SocketAppender
SocketHubAppender
SyslogAppender
TelnetAppender
WriterAppender
我们将涵盖 FileAppender文件 和 JDBCAppender 记录将被包括记录在数据库
我们使用的PatternLayout 使用 appender。所有可能的选项有:
DateLayout
HTMLLayout
PatternLayout
SimpleLayout
XMLLayout
使用HTMLLayout和XMLLayout,可以在HTML和XML格式和生成日志。
(四)
程序中调用QString path = QCoreApplication::applicationDirPath();获得的目录路径是可执行文件所在目录,默认情况下,可执行文件是生成在build-mytest-Desktop_Qt_5_10_1_GCC_64bit-Debug 这种形式的文件下的,但是,我们一般习惯将可执行文件保存在bin目录下,故我们将可执行程序放在自己创建的bin目录下,bin目录我们一般创建在家目录下,这样做的好处是,配置文件需要跟可执行文件在一个目录下,但是当还没有编译的情况下,是没有build目录的(可执行文件的生成目录)。
所以一般情况下,我们会在pro中直接更改可执行程序的生成目录为/bin,并且给其命名,方法如下:
TARGET = $$PWD/../../bin/mytest
当前路径为:$$PWD的路径,即.pro所在路径
向上返回两级目录,然后进入bin目录,可执行文件改名为mytest
$$PWD应该是shell命令
https://www.yiibai.com/log4j/log4j_architecture.html
https://blog.csdn.net/modi000/article/details/106077943
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!