SSM框架整合log4j

1.maven导入jar包

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.12</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
</dependency>

2.在根目录下创建log4j.properties

##logger是进行记录的主要类,appender是记录的方式,layout是记录的格式

#Logger - 日志写出器,供程序员输出日志信息
#Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去
#Layout - 日志格式化器,用来把程序员的logging request格式化成字符串
#PatternLayout - 用指定的pattern格式化logging request的Layou

#Log4j提供的appender有以下几种:
#  org.apache.log4j.ConsoleAppender(控制台),
#  org.apache.log4j.FileAppender(文件),
#  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
#  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
#  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

#Log4j提供的layout有以下几种:
#  org.apache.log4j.HTMLLayout(以HTML表格形式布局),
#  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

#Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下
#    %m 输出代码中指定的消息
#    %M 输出日志发生的方法名
#  %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 由于日志优先级有的是4个字符 有的是5个字符为了 一般书写的时候 写%5p或者%-5p 加-表示左对齐
#  %r 输出自应用启动到输出该log信息耗费的毫秒数
#  %c 输出所属的类目,通常就是所在类的全名
#  %t 输出产生该日志事件的线程名
#  %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
#  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
#  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
#    %L 输出日志发生的位置
#    %F 输出类名

#每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:
#A:off 最高等级,用于关闭所有日志记录。
#B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
#C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
#D:warm 表明会出现潜在的错误情形。
#E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
#F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
#G:all 最低等级,用于打开所有日志记录。

#Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug



#####################################################################
#设置级别和目的地 -- 把日志等级为debug的日志信息输出到
#log4j.rootLogger=debug,STDOUT,ONEFILE,HTML,EVERYDAY,ROLLINGFILE,DB
log4j.rootLogger=debug,STDOUT


# stdout:目的地 -- 打印到屏幕
## org.apache.log4j.ConsoleAppender:控制台
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
## org.apache.log4j.PatternLayout:灵活地指定布局模式
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
## 上一句设置了PatternLayout灵活指定格式,则要指定打印参数 [%-5p][%d{HH:mm:ss}][%c-%M] %m%n
log4j.appender.STDOUT.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss sss}][%t][%c-%M][%L](%F:%L) - %m%n

# ONEFILE:目的地 在一个文件中追加
#使用org.apache.log4j.FileAppender:日志会在一个文件中追加
log4j.appender.ONEFILE=org.apache.log4j.FileAppender
## 凡是 info,error,fatal 级别的数据都会在这里执行输出到 onefile.log 日志文件中
log4j.appender.ONEFILE.threshold=INFO
##设置文件输出路径
log4j.appender.ONEFILE.File=d:\\log\\onefile.log
## org.apache.log4j.PatternLayout:灵活地指定布局模式
log4j.appender.ONEFILE.layout=org.apache.log4j.PatternLayout
## 上一句设置了PatternLayout灵活指定格式,则要指定打印参数 [%-5p][%d{HH:mm:ss}][%l] %m%n
log4j.appender.ONEFILE.layout.ConversionPattern=[%-5p][%d{HH:mm:ss}][%C-%M] %m%n

# HTML:目的地 -- 输出到文件(限定每个文件大小)
##输出到文件(这里默认为追加方式),使用org.apache.log4j.FileAppender:日志会在一个文件中追加
log4j.appender.HTML=org.apache.log4j.FileAppender
## 凡是 info,error,fatal 级别的数据都会在这里执行输出到 log.html 日志文件中
log4j.appender.HTML.threshold=INFO
##设置文件输出路径
log4j.appender.HTML.File=D:\\log\\log.html
##设置文件输出样式;html格式: org.apache.log4j.HTMLLayout 该格式不用指明layout格式
log4j.appender.HTML.layout=org.apache.log4j.HTMLLayout



# EVERYDAY:目的地 -- 输出到文件(每天产生一个文件)
## org.apache.log4j.RollingFileAppender:每天产生一个日志文件
log4j.appender.EVERYDAY=org.apache.log4j.DailyRollingFileAppender
## 凡是 info,error,fatal 级别的数据都会在这里执行输出到 everyday.log 日志文件中
log4j.appender.EVERYDAY.threshold=INFO
##设置文件输出路径
log4j.appender.EVERYDAY.File=d:\\log\\everyday.log
## org.apache.log4j.PatternLayout:灵活地指定布局模式
log4j.appender.EVERYDAY.layout=org.apache.log4j.PatternLayout
## 上一句设置了PatternLayout灵活指定格式,则要指定打印参数 [%-5p][%d{HH:mm:ss}][%l] %m%n
log4j.appender.EVERYDAY.layout.ConversionPattern=[%-5p][%d{HH:mm:ss}][%C-%M] %m%n


##输出到文件 这里使用RollingFileAppender 文件超过一定大小会自动生成一个新的
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
## 凡是 info,error,fatal 级别的数据都会在这里执行输出到 everyday.log 日志文件中
log4j.appender.ROLLINGFILE.threshold=INFO
##设置文件输出路径
log4j.appender.ROLLINGFILE.File=D:\\log\\rollingfile.log
##设置文件输出样式
log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
## 上一句设置了PatternLayout灵活指定格式,则要指定打印参数 [%-5p][%d{HH:mm:ss}][%l] %m%n
log4j.appender.ROLLINGFILE.layout.ConversionPattern=[%-5p][%d{yyyy MM dd HH:mm:ss}][%c-%M] %m%n
## 指定文件的最大 大小
log4j.appender.ROLLINGFILE.MaxFileSize=1KB
#日志最大备份数目
log4j.appender.ROLLINGFILE.MaxBackupIndex=100


##把日志文件写入数据库
##########################日志输出到远程数据库########################################
##把日志文件写入数据库
##日志输出到数据库
log4j.appender.DB = org.apache.log4j.jdbc.JDBCAppender
##缓存
log4j.appender.DB.BufferSize = 0
##数据库驱动
log4j.appender.DB.Driver = com.mysql.jdbc.Driver
##数据url地址 ,本地可简写:jdbc:mysql:///test
log4j.appender.DB.URL = jdbc:mysql://localhost:3306/xxxxx?useUnicode=true&characterEncoding=utf8
##数据库用户名
log4j.appender.DB.User = xxxxx
##数据库密码
log4j.appender.DB.Password = xxxxx
##日志布局模式
log4j.appender.DB.layout = org.apache.log4j.PatternLayout
##日志插入数据库中,t_logs 表字段可自定义
log4j.appender.DB.layout.ConversionPattern = INSERT INTO logs(createDate, thread, priority, category,methodName, message) values('%d{yyyy MM dd HH:mm:ss}', '%t', '%-5p', '%c','%M', '[%l]-%m')

3.效果演示

猜你喜欢

转载自blog.csdn.net/weixin_42210904/article/details/111094370