log4j日志输出到文件的配置

log4j⽇志输出到⽂件的配置

1.Maven的dependency

2.log4j.properties的配置

3.Junit的Test类

4.web.xml的配置(⾮必要)

5.spring的db.config的配置(⾮必要)

⼀.maven的dependency

org.apache.logging.log4j

log4j-core

2.3

org.slf4j

slf4j-log4j12

1.7.25

junit

junit

4.12

这些jar包都可以去maven中央仓库下载到,http://search.maven.org/。

⼆.log4j.properties的配置。

#所有⽇志

log4j.rootLogger = DEBUG,stdout,file

log4j.logger.org.apache.ibatis=warn

log4j.logger.java.sql=warn

log4j.logger.org.springframework=warn

# Druid

log4j.logger.druid.sql=DEBUG

log4j.logger.druid.sql.DataSource=warn

log4j.logger.druid.sql.Connection=warn

log4j.logger.druid.sql.Statement=DEBUG

log4j.logger.druid.sql.ResultSet=warn

#设置包名的输出级别

log4j.logger.cn.wdq=DEBUG,wdq

#控制台输出

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.Threshold=DEBUG

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n

#所有⽂件输出

log4j.appender.file = org.apache.log4j.FileAppender

log4j.appender.file.File = ${webApp.root}/wdq_logs/allDEBUG.log

log4j.appender.file.Encoding=UTF-8

log4j.appender.file.name = fileLogDemo

log4j.appender.file.Threshold=DEBUG

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n

log4j.appender.file.append = true

#wdq下所有包的⽂件输出

log4j.appender.wdq = org.apache.log4j.FileAppender

log4j.appender.wdq.File = ${webApp.root}/wdq_logs/package_wdq.log

log4j.appender.wdq.Encoding=UTF-8

log4j.appender.wdq.name = fileLogDemo

log4j.appender.wdq.Threshold=DEBUG

log4j.appender.wdq.layout=org.apache.log4j.PatternLayout

log4j.appender.wdq.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n

log4j.appender.wdq.append = true

log4j.properties是默认加载的⽂件名,如果要另外起名字,还需要在web.xml⾥⾯进⾏配置,如果是测试⽤的,最好⽤默认的名字,这跟Spring的Application.xml有点像。

log4j.rootLogger = DEBUG,stdout,file中的DEBUG是⽇志输出优先级,从⾼到低依次为error,warn,info,debug,低级别的可以输出⾼级别的⽇志,如debug可以输出任

⽇志,但是info只能输出info,warn,error级别的⽇志。stdout,file这两个有点类似于变量名,可以⾃定义名称,可以⽤这两个东西进⾏控制台或者⽂件的输出。⽐如控制台

log4j.appender.stdout=org.apache.log4j.ConsoleAppender;保存为⽂件的为log4j.appender.file = org.apache.log4j.FileAppender。还有另外三种按天⽣成的,流形式⽣

滚动形式的,这⾥就不介绍了(反正我也忘了...),具体可以去官⽅⽂档看⼀下appender的⼏种输出形式。值得⼀提的是1.⽂件编码(Encoding):这个要定义为UTF-8不

的编码不⼀致,有导致部分乱码。2.⽂件的名字和存储路径(File):如上,我写的是${webApp.root}/wdq_logs/package_wdq.log,这个其实是在web.xml⾥⾯定义好的。

将会输出到你项⽬的磁盘根⽬录。⽂件名的格式有常⽤的.log和.html,推荐⽤.log,⽅便项⽬⾥⾯的所有⼈查看。3.(追加⽅式append):设置属性为true,如果是false的

追加到后⾯。

三.Junit的测试类的输出

package cn.wdq.test;

import org.apache.log4j.Logger;

import org.junit.Test;

public class LoggerTest {

Logger logger= Logger.getLogger(LoggerTest.class);

@Test

public void printLogger(){

logger.error("直接输出吧");

try {

} catch (Exception e) {

e.printStackTrace();

}

}

}控制台输出效果⽂件输出效果

四.web.xml的配置(⾮必要)

webAppRootKey

webApp.root

org.springframework.web.util.Log4jConfigListener

1.使⽤默认的名字(log4j.properties),就不⽤配置log4jConfigLocation(上⾯注释掉的部分)。不然就指定路径(log4j2.xml是我现在⽤不到的部分),我现在放的是在根

classpath是指定路径的格式,此外还有classpath.*:log4j2.xml。他们两个的区别是classpath是默认加载第⼀个,加载到就结束。classpath.*还会搜索后⾯还有没有匹配项

2.如果指定绝对路径就不⽤配置webAppRootKey,这个是把⽂件放到webapp下⾯的。value值可以⾃定义,但是name值只能是webAppRootKey。配置了之后就要配置lis

官⽅的说的默认加载顺序为1.* 2.*(前⾯这两个我忘了...与java相关的就后⾯的两个)3.log4j.properties和3.log4j.xml。现在⽹上有很多⽼旧的⽂章是1.X的版本的xml配置⽅

我这⾥要说的是2.X的。他们两者的区别如下

1.X

合集下载

log4j日志脱敏处理+javaproperties文件加载

log4j日志脱敏处理+javaproperties文件加载

log4j⽇志脱敏处理+javaproperties⽂件加载

Java 加载Properties 配置⽂件:

ResourceBundle bundle = ResourceBundle.getBundle("log4j_filter"); // 不要写扩展名 .properties

LOG_FILTER_SWITH = bundle.getString("log4j.filter.swith");

LOG_FILTER_KEYS = bundle.getString("log4j.filter.keys");

// 直接在本类中使⽤main调⽤时⽤ Properties.class.getResourceAsStream("/log4j_filter.properties");

//Properties p = new Properties();

//p.load(in);

//LOG_FILTER_SWITH = p.getProperty("log4j.filter.swith");

//LOG_FILTER_KEYS = p.getProperty("log4j.filter.keys");

⽇志脱敏实现: 因为只修改了⼀个log4j类的调⽤,故⽇志必须是

private final static Logger logger = LogManager.getLogger(SeqConfControl.class);

1 , 配置⽂件 log4j_filter.properties (⼀个参数是脱敏⽇志开关, ⼀个参数是要脱敏的关键字)

2,⾃定义类 : org.apache.logging.log4j.spi.Log4jFilter.java 是解析处理⽇志字符串中的敏感信息;

log4j原⽣类: org.apache.logging.log4j.spi.AbstractLogger.java 负责调⽤⾃⼰写的类的⽅法.

log4j2配置文件log4j2.xml详解(转载)

log4j2配置文件log4j2.xml详解(转载)

log4j2配置⽂件log4j2.xml详解(转载)

此博⽂转载⾃阿豪聊⼲货的“”,博⽂地址:https:///hafiz/p/6170702.html

⼀、背景

昨天了解了⼀下slf4j和log4j2,想要进⾏总结记录,配置步骤⼗分简单,唯⼀需要具体了解的就是log4j2.xml的配置,于是找到了这篇博⽂,配置讲解⼗分详

细,便转载作记录,再次感谢阿豪聊⼲货。以下原⽂:

最近由于项⽬的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之⽽来的slf4j整合log4j的配置()以及log4j2配置⽂件的详解,就需要我们来

好好聊⼀聊了。本⽂就专门来讲解下log4j2.xml配置⽂件的各项标签的意义。

⼆、配置全解

1.关于配置⽂件的名称以及在项⽬中的存放位置

log4j 2.x版本不再⽀持像1.x中的.properties后缀的⽂件配置⽅式,2.x版本配置⽂件后缀名只能为".xml",".json"或者".jsn".

系统选择配置⽂件的优先级(从先到后)如下:

(1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的⽂件.

(2).classpath下的名为log4j2-test.xml的⽂件.

(3).classpath下名为log4j2.json 或者log4j2.jsn的⽂件.

(4).classpath下名为log4j2.xml的⽂件.

我们⼀般默认使⽤log4j2.xml进⾏命名。如果本地要测试,可以把log4j2-test.xml放到classpath,⽽正式环境使⽤log4j2.xml,则在打包部署的时候不

要打包log4j2-test.xml即可。

2.缺省默认配置⽂件

3.配置⽂件节点解析

(1).根节点Configuration有两个属性:status和monitorinterval,有两个⼦节点:Appenders和Loggers(表明可以定义多个Appender和Logger).

log4j输出到文件和数据库

log4j输出到文件和数据库

log4j输出到文件和数据库

控制台的实现就不说了,这里提供两种实例的配置,一种是输出为文件的(每天输出一个文件),一种为输出到数据库的配置。

1、输出到文件:

Properties代码

log4j.rootCategory=WARN, CONSOLE, FILE

.surfilter.bt=FATAL,TOFILE

log4j.appender.TOFILE=org.apache.log4j.DailyRollingFileAppender

log4j.appender.TOFILE.Threshold=FATAL

log4j.appender.TOFILE.File=E:/javascpace/bt/logs/union.html

log4j.appender.TOFILE.Append=true

log4j.appender.TOFILE.ImmediateFlush=true

log4j.appender.TOFILE.DatePattern='.'yyyy-MM-dd'.html'

yout=com.surfilter.bt.util.FormatHTMLLayout

log4j.rootCategory=WARN, CONSOLE, FILE

.surfilter.bt=FATAL,TOFILE

log4j.appender.TOFILE=org.apache.log4j.DailyRollingFileAppender

log4j.appender.TOFILE.Threshold=FATAL

log4j.appender.TOFILE.File=E:/javascpace/bt/logs/union.html

log4j.appender.TOFILE.Append=true

log4j.appender.TOFILE.ImmediateFlush=true

log4j输出格式配置说明

log4j输出格式配置说明

%c 列出logger名字空间的全称,如果加上{}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介

假设当前logger名字空间是"a.b.c"

%c a.b.c

%c{2} b.c

%20c (若名字空间长度小于20,则左边用空格填充)

%-20c (若名字空间长度小于20,则右边用空格填充)

%.30c (若名字空间长度超过30,截去多余字符)

%20.30c (若名字空间长度小于20,则左边用空格填充;若名字空间长度超过30,截去多余字符)

%-20.30c (若名字空间长度小于20,则右边用空格填充;若名字空间长度超过30,截去多余字符)

%C 列出调用logger的类的全名(包含包路径) 假设当前类是"org.apache.xyz.SomeClass"

%C org.apache.xyz.SomeClass

%C{1} SomeClass

%d 显示日志记录时间,{}使用ISO8601定义的日期格式 %d{yyyy/MM/dd

HH:mm:ss,SSS} 2005/10/12 22:23:30,117

%d{ABSOLUTE} 22:23:30,117

%d{DATE} 12 Oct 2005 22:23:30,117

%d{ISO8601} 2005-10-12 22:23:30,117

%F 显示调用logger的源文件名 %F MyClass.java

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数 %l MyClass.main(MyClass.java:129) %L 显示调用logger的代码行 %L 129

%m 显示输出消息 %m This is a message for debug.

%M 显示调用logger的方法名 %M main

%n 当前平台下的换行符 %n Windows平台下表示rn

UNIX平台下表示n

log4j输出多个日志文件

log4j输出多个日志文件

log4j输出多个自定义日志文件

log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。

先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志:

log4j.rootLogger=DEBUG, stdout, logfile

.springframework=ERROR

.apache=INFO

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

yout=org.apache.log4j.PatternLayout

yout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=${myweb.root}/WEB-INF/log/myweb.log

log4j.appender.logfile.MaxFileSize=512KB

log4j.appender.logfile.MaxBackupIndex=5

yout=org.apache.log4j.PatternLayout

yout.ConversionPattern=%d %p [%c] - %m%n

如果想对不同的类输出不同的文件(以.Test为例),先要在Test.java中定义:

private static Log logger = LogFactory.getLog(Test.class);

然后在log4j.properties中加入:

.Test= DEBUG, test

log4j2.xml 标准配置写法

log4j2.xml 标准配置写法

一、概述

log4j2是Apache Software Foundation的一个开源日志框架,广泛应用于Java应用程序的日志记录和管理。在使用log4j2时,通常需要编写log4j2.xml文件进行配置。本文将介绍log4j2.xml标准配置的写法,帮助读者更加有效地使用log4j2进行日志记录和管理。

二、log4j2.xml文件概述

1. log4j2.xml是log4j2的配置文件,用于定义日志记录器、日志级别、输出目的地等配置信息。

2. log4j2.xml采用XML格式进行配置,通过定义各种元素和属性来实现对log4j2框架的配置和定制。

三、log4j2.xml标准配置写法

在编写log4j2.xml文件时,可以按照以下标准配置进行操作:

1. 配置根节点

```xml

```

其中,根节点包含了两个属性:status和monitorInterval。status属性用于设置全局日志级别,monitorInterval属性用于指定log4j2监视配置文件变化的时间间隔。

2. 配置日志级别

```xml

```

在节点下,可以通过节点配置全局日志级别,并通过节点引用Appenders进行输出。

3. 配置Appenders

```xml

```

在节点下,可以配置各种Appenders,例如Console和File。通过name属性指定Appender的名称,通过target或fileName等属性指定输出目的地,并通过节点定义日志输出格式。

4. 完整的配置示例

综合以上各项配置,下面给出一个完整的log4j2.xml标准配置示例:

```xml

springboot+log4j2打印sql日志到日志文件

springboot+log4j2打印sql⽇志到⽇志⽂件

框架:springboot + log4j2 ⽇志框架;

在yml⽂件指定mapper接⼝包名:

不⽤在yml ⽂件下添加:mybatis.configuration = org.apache.ibatis.logging.stdout.StdOutImpl

该标签亲测作⽤只是在控制台输⼊sql⽇志,如果想将sql打印到⽇志⽂件中,有了它的存在,只能在控制台打印sql,⽇志⽂件是不会打印的;如图所⽰:

log4j2.xml ⽂件 appenders 标签下为

添加到 loggers 下:

完整的 log4j2.xml 内容如下:

d:gxs-log

${app_name}

filePattern="${log_path}/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz">

filePattern="${log_path}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">

filePattern="${log_path}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">

filePattern="${log_path}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">

View Code

log4j日志不输出的问题

log4j⽇志不输出的问题

今天服务器上报错,想先去看⼀下⽇志进⾏排查,结果发现⽇志很久都没有输出过了。从上午排查到下午,刚刚解决,因此记录⼀下,但现

在也只是知其然,并不知其所以然,所以如果⼤家有什么想法请在下⽅评论。

先说⼀下环境,服务器是linux,项⽬是运⾏在tomcat下的Spring项⽬,⽇志⽤的是log4j。

⾸先,从10⽉13号开始便没有新的⽇志⽂件了。假设⽇志名为log.txt(如果你设置了DailyRollingFileAppender,那么你当天的⽇志⽂件就

是log.txt),先备份该⽂件到其他⽬录下,然后删除该⽂件,重新启动tomcat。这是为了确认你的log4j配置是否有问题,因为这是最容易出

错的地⽅。很遗憾,我不是这⾥出的问题,因为项⽬重启后,⽇志⽂件⼜重新⽣成了,但很奇怪的是,⽇志⽂件是空的,其⼤⼩为0.

感觉⾃⼰碰上了很神奇的问题,因此我在⾃⼰的本地进⾏调试,启动项⽬后发现,正常的项⽬启动⽇志是有的:

15:13:48:0253 INFO [RMI TCP Connection(3)-127.0.0.1] -Root WebApplicationContext: initialization completed in 18479 ms

但我⾃⼰的⼀些⽇志输出是不显⽰的,⽐如:

private static final Logger log = LoggerFactory.getLogger(MyDomain.class);

("show info log");

show info log这句话就不打印,现在证明,我的⽇志配置没有问题,服务器也找到了我的⽇志⽂件,但应该是我⾃⼰的Logger是不对应正确的

⽇志输出的,因为我的console(控制台)有显⽰。

接下来,我就是开始看源码了。先是LoggerFactory.getLogger(Class clazz)⽅法:

public static Logger getLogger(Class clazz) {

【原】配置Log4j,使得MyBatis打印出SQL语句

【原】配置Log4j,使得MyBatis打印出SQL语句

【环境参数】

JDK:jdk1.8.0_25

IDE:Eclipse Luna Servie Release 1

框架:Spring 4.1.5 + SpringMVC 4.1.5 + MyBatis 3.2.2

【配置步骤】

⼀、设置MyBatis的Setting(⾮必须,不同环境下,可能不需要该设置)。

在“src/main/java/resources”⽬录下,创建mybatis-config.xml⽂件,并且输⼊下列内容。

1

2

3 PUBLIC "-////DTD Config 3.0//EN"

4 "/dtd/mybatis-3-config.dtd">

5

6

7

8

9

10

⼆、配置log4j的配置⽂件。

不同的项⽬中,log4j的配置⽂件的格式可能不同,在⼀些项⽬中,log4j的配置⽂件是XML格式的,⽐如log4j.xml;在另⼀些项⽬中,log4j

的配置⽂件是properties格式的,⽐如log4j.properties。

备注:properties格式⽂件的配置⼀般只在⽼的项⽬中存在,新的互联⽹类项⽬,⼀般都是XML格式。

1、对于properties格式⽂件的配置。

1 ###############Log4j 4 SQL Output start#################

2 .xxx.mydao=DEBUG

3 .springframework=DEBUG

4 .ibatis=DEBUG

5 mon.jdbc.SimpleDataSource=DEBUG

6 mon.jdbc.ScriptRunner=DEBUG

log4配置详解

实例

#定义log输出级别

log4j.rootLogger=debug,CONSOLE

#log4j.rootLogger=INFO,DEFAULT

#定义日志输出目的地:控制台

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

#日志输出格式,下面一行是指定具体的格式

yout=org.apache.log4j.PatternLayout

yout.ConversionPattern=%d{yyyy-MM-dd

HH:mm:ss,SSS} [%c]-[%p] %m%n

#按一定的频度滚动日志记录文件

log4j.appender.DEFAULT=org.apache.log4j.DailyRollingFileAppender

#DatePattern,精确到dd为每天

log4j.appender.DEFAULT.DatePattern='.'yyyy-MM-dd

#append的值为true为增加,false则为覆盖

log4j.appender.DEFAULT.Append=true

#file 指定日志输出目录

log4j.appender.DEFAULT.File=D:/logs/default.log

#日志输出格式

yout=org.apache.log4j.PatternLayout

yout.ConversionPattern=%d{yyyy-MM-dd

HH:mm:ss,SSS} [%c]-[%p] %m%n

% 含义:

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM

dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档