log4j配置详解
发布日期:2021-06-30 11:24:39 浏览次数:2 分类:技术文章

本文共 6284 字,大约阅读时间需要 20 分钟。





版权声明

  • 本文原创作者:
  • 作者博客地址:

log4j概述

log4j是Apache提供的的开源的日志组件,提供强大而且方便的日志记录功能。开发者可在其免费下载Log4j最新版本的软件包。

在log4j中,定义了多种日志级别;但是,Log4j建议只使用其中四个级别,它们的优先级从低到高分别是DEBUG、INFO、WARN、ERROR 。假若设定日志输入的级别为INFO,则只处理等于或高于该级别的日志。

log4j.properties配置文件

在log4j.properties配置文件中主要配置三大组件:

Logger

指定日志类别和级别

appender

指定日志输出的位置

layout

指定日志以何种形式输出

现对其分别介绍,详情如下。

logger

Logger中,最常用的为rootLogger,其语法如下:

log4j.rootLogger = level,appenderName1,appenderName2, .....

level用于设定日志的优先级;appenderName为appender的名字,用于设定日志的输出位置,log4j中可设置多个appenderName。

appender

在Log4j中提供以下5种appender用于对日志信息进行不同的处理:

org.apache.log4j.ConsoleAppender  表示将信息输出到控制台org.apache.log4j.FileAppender表示将信息输出到文件org.apache.log4j.DailyRollingFileAppender表示每天产生一个日志文件org.apache.log4j.RollingFileAppender表示当日志文件到达指定大小时产生一个新的文件org.apache.log4j.WriterAppender表示将日志信息以流格式发送到任意指定的地方

每种appender的配置格式如下:

log4j.appender.appenderName = Log4j提供的appender类log4j.appender.appenderName.属性名 = 属性值.....log4j.appender.appenderName.属性名 = 属性值

各appender常见配置示例如下:

ConsoleAppender

Threshold = DEBUG

指定日志消息的输出最低层次
ImmediateFlush = TRUE
默认值是true,所有的消息都会被立即输出
Target = System.err
默认值System.out,输出到控制台(err为红色,out为黑色)

FileAppender

Threshold = INFO

指定日志消息的输出最低层次
ImmediateFlush = TRUE
默认值是true,所有的消息都会被立即输出
File = C:\log4j.log
指定消息输出到C:\log4j.log文件
Append = FALSE
将消息追加到指定文件中,false指将消息覆盖指定的文件内容 ;默认值true
Encoding = UTF-8
可以指定文件编码格式

DailyRollingFileAppender

Threshold = WARN

指定日志消息的输出最低层次
ImmediateFlush = TRUE
默认值是true,所有的消息都会被立即输出
File =C:\log4j.log
指定消息输出到C:\log4j.log文件
Append= FALSE
默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
DatePattern=’.'yyyy-ww
每周滚动一次文件,即每周产生一个新的文件。
还可以按用以下参数:
'.'yyyy-MM:每月
'.'yyyy-ww:每周
'.'yyyy-MM-dd:每天
'.'yyyy-MM-dd-a:每天两次
'.'yyyy-MM-dd-HH:每小时
'.'yyyy-MM-dd-HH-mm:每分钟
Encoding = UTF-8:可以指定文件编码格式

RollingFileAppender

Threshold = ERROR

指定日志消息的输出最低层次
ImmediateFlush = TRUE
默认值是true,所有的消息都会被立即输出
File =C:/log4j.log
指定消息输出到C:/log4j.log文件
Append= FALSE
默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
MaxFileSize = 100KB
后缀可以是KB,MB,GB.在日志文件到达该大小时,将会自动滚动.如:log4j.log.1
MaxBackupIndex = 2
指定可以产生的滚动文件的最大数
Encoding = UTF-8
可以指定文件编码格式

layout

Log4j常用layout如下:

org.apache.log4j.HTMLLayout以HTML表格形式布局org.apache.log4j.PatternLayout可以灵活地指定布局模式org.apache.log4j.SimpleLayout包含日志信息的级别和信息字符串org.apache.log4j.TTCCLayout包含日志产生的时间、线程、类别等等信息

log4j使用示例

第一步

在其官网下载jar包并导入项目

第二步

在项目src文件夹下建立log4j.properties文件并对log4j进行配置,代码如下:

log4j.rootLogger=DEBUG,console,dailyFile,imlog4j.additivity.org.apache=true# 控制台(console)log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.Threshold=DEBUGlog4j.appender.console.ImmediateFlush=truelog4j.appender.console.Target=System.errlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n# 日志文件(logFile)log4j.appender.logFile=org.apache.log4j.FileAppenderlog4j.appender.logFile.Threshold=DEBUGlog4j.appender.logFile.ImmediateFlush=truelog4j.appender.logFile.Append=truelog4j.appender.logFile.File=D:/logs/log.log4jlog4j.appender.logFile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n# 回滚文件(rollingFile)log4j.appender.rollingFile=org.apache.log4j.RollingFileAppenderlog4j.appender.rollingFile.Threshold=DEBUGlog4j.appender.rollingFile.ImmediateFlush=truelog4j.appender.rollingFile.Append=truelog4j.appender.rollingFile.File=D:/logs/log.log4jlog4j.appender.rollingFile.MaxFileSize=200KBlog4j.appender.rollingFile.MaxBackupIndex=50log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayoutlog4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n# 定期回滚日志文件(dailyFile)log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.dailyFile.Threshold=DEBUGlog4j.appender.dailyFile.ImmediateFlush=truelog4j.appender.dailyFile.Append=truelog4j.appender.dailyFile.File=D:/logs/log.log4jlog4j.appender.dailyFile.DatePattern='.'yyyy-MM-ddlog4j.appender.dailyFile.layout=org.apache.log4j.PatternLayoutlog4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n# 应用于socketlog4j.appender.socket=org.apache.log4j.RollingFileAppenderlog4j.appender.socket.RemoteHost=localhostlog4j.appender.socket.Port=5001log4j.appender.socket.LocationInfo=true# Set up for Log Factor 5log4j.appender.socket.layout=org.apache.log4j.PatternLayoutlog4j.appender.socket.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n# Log Factor 5 Appenderlog4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appenderlog4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000# 发送日志到指定邮件log4j.appender.mail=org.apache.log4j.net.SMTPAppenderlog4j.appender.mail.Threshold=FATALlog4j.appender.mail.BufferSize=10log4j.appender.mail.From = xxx@mail.comlog4j.appender.mail.SMTPHost=mail.comlog4j.appender.mail.Subject=Log4J Messagelog4j.appender.mail.To= xxx@mail.comlog4j.appender.mail.layout=org.apache.log4j.PatternLayoutlog4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n# 应用于数据库log4j.appender.database=org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.database.URL=jdbc:mysql://localhost:3306/testlog4j.appender.database.driver=com.mysql.jdbc.Driverlog4j.appender.database.user=rootlog4j.appender.database.password=log4j.appender.database.sql=INSERT INTO LOG4J (Message) VALUES('=[%-5p] %d(%r) --> [%t] %l: %m %x %n')log4j.appender.database.layout=org.apache.log4j.PatternLayoutlog4j.appender.database.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n# 自定义Appenderlog4j.appender.im = net.cybercorlin.util.logger.appender.IMAppenderlog4j.appender.im.host = mail.cybercorlin.netlog4j.appender.im.username = usernamelog4j.appender.im.password = passwordlog4j.appender.im.recipient = corlin@cybercorlin.netlog4j.appender.im.layout=org.apache.log4j.PatternLayoutlog4j.appender.im.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

项目结构如下:

在这里插入图片描述

第三步

在Java代码中使用log4j记录项目日志,示例如下:

import org.apache.log4j.Logger;/* * 本文作者:谷哥的小弟 * 博客地址:https://blog.csdn.net/lfdfhl */public class TestLog4j {
public static void main(String[] args) {
Logger logger=Logger.getLogger(TestLog4j.class); try {
logger.info("程序开始执行"); int a=5; int b=3; int c=a+b; System.out.println("c="+c); int d=a/0; System.out.println("d="+d); } catch (Exception e) {
logger.error(e.toString()); } }}

第四步

在指定目录查看日志,图示如下:

在这里插入图片描述

转载地址:https://it9527.blog.csdn.net/article/details/99982965 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:服务(Service)全解析(五)--前台Service
下一篇:服务(Service)全解析(六)--避免被系统回收的Service

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月11日 10时20分18秒