springboot整合log4j全过程详解
1、在pom.xml中导入log4j依赖,注意在导入依赖之前要先关闭Spring中默认的日志
以此来关闭默认日志:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><!-- 去掉默认日志配置logback --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions> </dependency>
此为log4j的依赖,注意最好使用此版本,以便使用其中的方法:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j</artifactId><version>1.3.8.RELEASE</version> </dependency>
2、在src/main/resources目录下(sprintBoot默认会去该目录下寻找”.properties“的文件当作配置文件)配置log4j.properties文件,文件内容如下:
log4j.rootLogger=info,error,info,warn,stdout ##############打印到平台的日志################## log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #输出的信息格式 log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p:%X{traceID}]-(%C:%L) %m%n ##############WARN打印的文件的日志################## log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender log4j.appender.tracking.Encoding=utf-8 log4j.appender.warn.layout=org.apache.log4j.PatternLayout log4j.appender.warn.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p]-(%C:%L) %m%n #输出文件位置 log4j.appender.warn.File=log/warn/warn log4j.appender.warn.DatePattern='.'yyyy-MM-dd-HH log4j.appender.warn.Threshold=WARN ##############ERROR打印的文件的日志################## log4j.appender.error=org.apache.log4j.DailyRollingFileAppender log4j.appender.error.layout=org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p]-(%C:%L) %m%n log4j.appender.error.File=log/error/error log4j.appender.error.DatePattern='.'yyyy-MM-dd-HH log4j.appender.error.Threshold=ERROR ##############INFO打印的文件的日志##################cn.com.bluemoon.bd.service.its.deg.common.Log4jMyAppender log4j.appender.info=org.apache.log4j.DailyRollingFileAppender log4j.appender.info.layout=org.apache.log4j.PatternLayout log4j.appender.info.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p:%X{traceID}]-(%C:%L) %m%n #这个相对路径是从当前配置文件的路径开始的 log4j.appender.info.File=log/info/info #DataPattern规定每小时产生一个日志文档,当前小时的文日志会放在名字为info的文档里,以前的日志放在lofo.yyyy-MM-dd-HH的文档里。 log4j.appender.info.DatePattern='.'yyyy-MM-dd-HH-mm log4j.appender.info.ImmediateFlush=true
其中log4j.appender.warn.File=log/warn/warn表示的是日志输出的位置,这里用的是相对位置(使用服务器中的位置也可),若使用相对位置,则需要与src同级建立一个log文件,如图
3、想要在日志中输出指定的信息,需要在service层引用,首先创建Log的实例:
private static Logger log = Logger.getLogger(Register.class);//方法中写当前类名加class
然后在逻辑中按需调用方法,例:
log.info("用户"+userId+"登录成功")
至此log4j可以进行使用。
配置文件详解:
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
\1. 配置文件 Log4J配置文件的基本格式如下:
#配置根Logger log4j.rootLogger = [ level ] , appenderName , appenderName1 , … #配置日志信息输出目的地Appender及Appender选项 log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option = value1… log4j.appender.appenderName.optionN = valueN #配置日志信息的格式(布局)及格式布局选项 appender.appenderName.layout = fully.log4j.qualified.name.of.layout.classlog4j.appender.appenderName.layout.option1 = value1… log4j.appender.appenderName.layout.optionN = valueN
其中 [ level ] 是日志输出级别:ERROR、WARN、INFO、DEBUG ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session丢失 INFO 为一般要显示的信息,比如登录登出 DEBUG 为程序的调试信息
appenderName是日志输出位置的配置的命名
log4j.appender.appenderName = fully.qualified.name.of.appender.class中fully.qualified.name.of.appender.class应换上以下信息输出的目的地:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
appender.appenderName.layout = fully.log4j.qualified.name.of.layout.class中fully.qualified.name.of.layout.class格式布局应换上以下信息:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
log4j.appender.appenderName.option中option应替换的属性/选项
1.ConsoleAppender控制台选项
Threshold=DEBUG:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意味着所有的消息都会被立即输出。 Target=System.err:默认情况下是:System.out,指定输出控制台
2.FileAppender 文件选项
Threshold=DEBUF:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
3.RollingFileAppender 每天生成一个文件选项
Threshold=DEBUG:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。 MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
配置示例
### 配置根 ### log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE ### 设置输出sql的级别,其中logger后面的内容全部为jar包中所包含的包名 ### log4j.logger.org.apache=dubug log4j.logger.java.sql.Connection=dubug log4j.logger.java.sql.Statement=dubug log4j.logger.java.sql.PreparedStatement=dubug log4j.logger.java.sql.ResultSet=dubug ### 配置输出到控制台 ### log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Target = System.out log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n ### 配置输出到文件 ### log4j.appender.fileAppender = org.apache.log4j.FileAppender log4j.appender.fileAppender.File = logs/log.log log4j.appender.fileAppender.Append = true log4j.appender.fileAppender.Threshold = DEBUG log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout log4j.appender.fileAppender.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 配置输出到文件,并且每天都创建一个文件 ### log4j.appender.dailyRollingFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.dailyRollingFile.File = logs/log.log log4j.appender.dailyRollingFile.Append = true log4j.appender.dailyRollingFile.Threshold = DEBUG log4j.appender.dailyRollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.dailyRollingFile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 配置输出到文件,且大小到达指定尺寸的时候产生一个新的文件 ###log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLING_FILE.Threshold=ERROR log4j.appender.ROLLING_FILE.File=rolling.log log4j.appender.ROLLING_FILE.Append=true log4j.appender.ROLLING_FILE.MaxFileSize=10KB log4j.appender.ROLLING_FILE.MaxBackupIndex=1 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ### 配置输出到邮件 ### log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.Threshold=FATAL log4j.appender.MAIL.BufferSize=10 log4j.appender.MAIL.From=chenyl@yeqiangwei.com log4j.appender.MAIL.SMTPHost=mail.hollycrm.com log4j.appender.MAIL.Subject=Log4J Message log4j.appender.MAIL.To=chenyl@yeqiangwei.com log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ### 配置输出到数据库 ### log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver log4j.appender.DATABASE.user=root log4j.appender.DATABASE.password= log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=SampleMessages.log4j log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
ConversionPattern 日志信息,符号所代表的含义:
-X号: X信息输出时左对齐; %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL, %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 %r: 输出自应用启动到输出该log信息耗费的毫秒数 %c: 输出日志信息所属的类目,通常就是所在类的全名 %t: 输出产生该日志事件的线程名 %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10) %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。 %%: 输出一个"%"字符 %F: 输出日志消息产生时所在的文件名称 %L: 输出代码中的行号 %m: 输出代码中指定的消息,产生的日志具体信息 %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如: 1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。 2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。 3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。
欢迎大家批评指正。
springboot整合log4j全过程详解相关推荐
- Springboot整合redis配置详解
Springboot整合redis配置详解 1.导入依赖 <dependency><groupId>org.springframework.boot</groupId&g ...
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔 ...
- springboot整合mysql5.7_详解SpringBoot整合MyBatis详细教程
1. 导入依赖 首先新建一个springboot项目,勾选组件时勾选Spring Web.JDBC API.MySQL Driver 然后导入以下整合依赖 org.mybatis.spring.boo ...
- SpringBoot 整合 Redis 使用详解(StringRedisTemplate 和 RedisTemplate 对比分析)
背景: 最近项目采用前后端分离的架构,单点登录系统采用Redis存储用户session信息,在这里总结下springboot整合redis的详细过程,以及部分源码分析 1.前期准备 首先保证安装好re ...
- Prometheus+SpringBoot应用监控全过程详解
1. Prometheus是什么 Prometheus是一个具有活跃生态系统的开源系统监控和告警工具包.一言以蔽之,它是一套开源监控解决方案. Prometheus主要特性: 多维数据模型,其中包含由 ...
- springboot2整合mysql5_SpringBoot2整合SSM框架详解
SpringBoot2整合SSM框架详解 发布时间:2019-01-15 21:33, 浏览次数:1218 , 标签: SpringBoot SSM <>开发环境 * 开发工具:Eclip ...
- Springboot多数据源配置详解
Springboot多数据源配置详解 概念 配置 多数据源使用 概念 一般来说,我们正常的业务只涉及一个数据源,在特定的业务场景中需要使用多个数据源的情况,就需要配置多个数据源来满足特定的业务需求.本 ...
- Spring整合Schedule定时任务详解
Spring整合Schedule定时任务详解 Spring 定时任务官方网站 一.概述 用Spring,就是为了简单. 但是我还是要总结下java定时任务实现的几种方式. 1.TimerTask,等于 ...
- Springboot@Configuration和@Bean详解
Springboot@Configuration和@Bean详解 一.@Configuration @Target({ElementType.TYPE}) @Retention(RetentionPo ...
最新文章
- Spring 3 MVC and XML example
- 从一道面试题谈起,大厂到底看重程序员的什么能力?
- 游戏行业案例 | 99.7% 的充值玩家比例提升,从何而来?
- 8086汇编4位bcd码_51单片机用汇编语言实现BCD码转换
- 描述一下Spring Bean 的生命周期
- 贺利坚老师汇编课程47笔记:jmp指令无条件转移只修改IP
- Mozilla推动互联网成为游戏发展的强有力平台
- 计算机网络系统技术交底,公共广播系统技术交底
- html视频如何转换成mp4视频格式,如何将把视频文件转换成MP4格式?先说两种方法...
- Moviepy模块之视频去除声音、添加音乐
- 2018-GaAN: Gated Attention Networks for Learning on Large and Spatiotemporal Graphs
- 算法创作|龟兔赛跑问题解决方法
- 用Springboot写饼状图
- 什么是网络推广以及如何做好网络推广
- 这可能是京东考前焦虑最重的一次618
- Advertising and public relations
- ElementUI分页与增删改合并
- android简单手电筒,android 简单的手电筒制作
- 批量替换 Word 文档最后几页
- 我是做地推的,一个月收入大概2W左右
热门文章
- android.process.media已停止 三星,android – 在三星设备上播放mp4文件时出现...
- 实验4-EXCEL回归分析
- 职称计算机考试模块论坛怎么样,今天做职称计算机WROD模块练习的一些感受
- 查询邓白氏编码时地址有误
- Win7桌面移到其他磁盘方法
- JDBC自我复习之Statement和PreparedStatement的区别
- 上下求索matlab,上下求索 [http://993878382.qzone.qq.com]
- Bystack世界观(一):资产的三个维度
- 同为(TOWE)IPS系列工业插头插座、连接器的选型及特点
- 网站新闻发布系统的设计与实现(PHP+MySQL)