数据库中间件DBLE学习 学习配置log4j2.xml
Posted Buddy Yuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中间件DBLE学习 学习配置log4j2.xml相关的知识,希望对你有一定的参考价值。
前言
今天要去做大扫除。昨天跟朋友和同事聊起,他们都建议我:“你请个保洁不就好了吗?”。“买个扫地机器人。” 确实,用现代的方法很容易搞定这件事,也不用花时间。可是我还是买了400元左右的清洁工具。因为古人曾经说过:“一屋不扫,何以扫天下!”。这件事背后的哲学道理就是我们就是应该从小事做起, 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。大扫除是次要,磨炼一下我才是认真的。
log4j2配置
dble使用 log4j2这个框架来记录日志, log4j2是log4j 1.x 的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,在异步方面的性能得到了巨大提升,除了提供Async Append异步实现外,还提供了Async Log异步实现。Async Append异步实现方式和logback的异步实现差不多。而Async Log基于 LMAX Disruptor库,实现了一个高性能的异步记录器。 LMAX Disruptorr是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题。
dble的log4j2配置比较简单。我们看下系统默认的demo配置。
<RollingRandomAccessFile name="RollingFile" fileName="${sys:DBLE_HOME}/logs/dble.log"
filePattern="${sys:DBLE_HOME}/logs/$${date:yyyy-MM}/dble-%d{MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="100">
<Delete basePath="logs" maxDepth="2">
<IfFileName glob="*/dble-*.log.gz">
<IfLastModified age="30d">
<IfAny>
<IfAccumulatedFileSize exceeds="1 GB" />
<IfAccumulatedFileCount exceeds="10" />
</IfAny>
</IfLastModified>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
RollingRandomAccessFile标签。
这个标签代表了log4j2输出日志的一种方式(还有别的输出方式,例如控制台Console、文件File、Flume等等)。 RollingRandomAccessFile的原理是,将日志写入到文件,同时指定当文件达到一定大小(如250MB)时,重新生成一个文件继续写入日志,而之前的文件则进行归档。
RollingRandomAccessFile这种方式非常的实用,因为如果一直往一个文件中写,文件就会非常大,打开就会卡死,也不方便查询。如果一个日志高达20-30G,直接打开电脑就卡白屏了。
filename 指定当前日志文件的位置和文件名称
filePattern指定当发生Rolling时,文件的归档的路径和重命名的名字。
PatternLayout 控制台台或文件输出源(Console、File、RollingRandomAccessFile)都必须包含一个PatternLayout节点,用于指定输出文件的格式(如 日志输出的时间 文件 方法 行数 等格式)。例如:
2020-01-06 20:41:26.234 INFO [complexQueryExecutor5] (com.actiontech.dble.meta.ReloadLogHelper.info(ReloadLogHelper.java:58)) - DataNode[dn2]:Table[test_patternvalue] on resudelt true count is 1
Policies指定了策略,本例是大于250MB,就需要重新产生新的日志,并将之前的进行归档。还有其他的策略,例如时间等等。
DefaultRolloverStrategy标签
主要用作日志的滚动删除。
max 代表最大保存文件个数,此例是100个。
Delete标签指明删除, basePath代表了删除的基本路径,本例是在logs文件夹下面。而 maxDepth指明文件夹下的深度,这里是2层,1表示当前目录,2就表示当前目录的下一层目录。例如:/logs/2020-01文件夹下面的文件都会被扫描或是统计。
IfFileName标签的 glob指定了日志格式,所有扫描到的符合此命名规范的文件都被认为是日志文件
IfLastModifie标签里面的 age代表最后一次修改文件的时间,只有修改时间超过age的文件才会被考虑删除。age的单位:D、H、M、S,分别表示天、小时、分钟、秒。此处例子是30天。
IfAny标签:判断嵌套的condition是否有一个满足
IfAccumulatedFileSize 判断在遍历文件树的时候,文件的总大小是否超过了指定值,此处为1GB。
IfAccumulatedFileCount 判断在遍历文件树的时候,文件个数是否超过了指定值,此处为10。
上述整体连贯起来就是,监控logs目录下的第2层子目录,并且符合dble-.log.gz命名的,同时要求是修改时间已经超出30天的文件。先遍历出来。然后满足文件大小大于1GB或者文件数量大于10个目录会清理。
后记
今天学习的dble中的log4j2配置,如果想要更加复杂的设置,可以参考apache官网。[log4j2]https://logging.apache.org/log4j/2.x/manual/appenders.html
以上是关于数据库中间件DBLE学习 学习配置log4j2.xml的主要内容,如果未能解决你的问题,请参考以下文章