GoMind Hub

log4j

计算机知识思维导图:log4j。网页展示前三层结构,可在线查看完整脑图并下载 GoMind 文件。

2026-08-25

计算机知识学习资料思维导图
## log4j
### log4j
#### main 测试
##### 加载配置文件
##### 加载java.util.Properties
##### show log
#### 日志信息配置
##### 基础日志log4j.rootLogger
##### 分包日志log4j.logger
##### appender
##### 扩展
#### 材料
##### log4j 2
##### log4j的ConversionPattern参数的意义

> 仅展示前三层结构;请在线查看完整脑图或下载 GoMind 文件。

log4j

log4j
log4j.properties
加载配置文件
/**

	 * log4j 加载文件初始化

	 */

	public static void log4jLoaderFileInit() {

		// 准备log4j配置文件

		String filePath = System.getProperty("user.dir") + "/webapp/WEB-INF/log4j.properties";

		System.out.println(filePath);



		// 加载log4j配置

		PropertyConfigurator.configure(filePath);

	}
加载java.util.Properties
/**

	 * log4j 自定义初始化

	 */

	public static Properties log4jCustomInit() {

		// 准备log4j配置

		Properties prop = new Properties();

		prop.setProperty("log4j.rootLogger", "DEBUG, CONSOLE");

		prop.setProperty("log4j.appender.CONSOLE", "org.apache.log4j.ConsoleAppender");

		prop.setProperty("log4j.appender.CONSOLE.layout", "org.apache.log4j.PatternLayout");

		prop.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern", "%d{HH:mm:ss,SSS} [%t] %-5p %C{1} : %m%n");



		// 加载log4j配置

		PropertyConfigurator.configure(prop);

		return prop;

	}
show log
/**

	 * 测试显示日志

	 */

	public static void log4jShowLog() {

		logger.debug("Start of the main() in TestLog4j");

		logger.info("Just testing a log message with priority set to INFO");

		logger.warn("Just testing a log message with priority set to WARN");

		logger.error("Just testing a log message with priority set to ERROR");

		logger.fatal("Just testing a log message with priority set to FATAL");

		logger.log(Priority.WARN, "Testing a log message use a alternate form");

	}
main 测试
package test;



import java.net.URISyntaxException;

import java.util.Properties;



import org.apache.log4j.LogManager;

import org.apache.log4j.Logger;

import org.apache.log4j.Priority;

import org.apache.log4j.PropertyConfigurator;



/**

 * 

 * @author liuxiang@wosaitech.com

 * @creation 2015年8月21日

 */

public class Test {

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



	/**

	 * log4j 加载文件初始化

	 */

	public static void log4jLoaderFileInit() {

		// 准备log4j配置文件

		String filePath = System.getProperty("user.dir") + "/webapp/WEB-INF/log4j.properties";

		System.out.println(filePath);



		// 加载log4j配置

		PropertyConfigurator.configure(filePath);

	}



	/**

	 * log4j 自定义初始化

	 */

	public static Properties log4jCustomInit() {

		// 准备log4j配置

		Properties prop = new Properties();

		prop.setProperty("log4j.rootLogger", "DEBUG, CONSOLE");

		prop.setProperty("log4j.appender.CONSOLE", "org.apache.log4j.ConsoleAppender");

		prop.setProperty("log4j.appender.CONSOLE.layout", "org.apache.log4j.PatternLayout");

		prop.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern", "%d %-5p [%C.%M] (%F:%L) %3x - %m%n");



		// 加载log4j配置

		PropertyConfigurator.configure(prop);

		return prop;

	}



	/**

	 * 测试显示日志

	 */

	public static void log4jShowLog() {

		logger.debug("Start of the main() in TestLog4j");

		logger.info("Just testing a log message with priority set to INFO");

		logger.warn("Just testing a log message with priority set to WARN");

		logger.error("Just testing a log message with priority set to ERROR");

		logger.fatal("Just testing a log message with priority set to FATAL");

		logger.log(Priority.WARN, "Testing a log message use a alternate form");

	}



	public static void main(String[] args) throws URISyntaxException {



		// log4jLoaderFileInit();// log4j 加载文件初始化

		Properties prop = log4jCustomInit();// log4j 自定义初始化



		log4jShowLog();// 输入日志测试



		// 修改日志格式

		prop.setProperty("log4j.rootLogger", "fatal, CONSOLE");

		prop.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern", "%d %-5p [%C.%M()] (%F:%L) %3x - %m%n");

		// 2015-11-16 13:22:54,149 FATAL [test.Test.log4jShowLog] (Test.java:55)     - Just testing a log message with priority set to FATAL

		PropertyConfigurator.configure(prop);

		log4jShowLog();// 输入日志测试

		

		prop.setProperty("log4j.rootLogger", "fatal, CONSOLE");

		prop.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern", "%d %-5p [%c] (%F:%L) %3x - %m%n");

		// 2015-11-16 13:22:54,154 FATAL [test.Test] (Test.java:55)     - Just testing a log message with priority set to FATAL

		PropertyConfigurator.configure(prop);

		log4jShowLog();// 输入日志测试

	}

}



// -X: X信息输出时左对齐

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

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

// HH:mm:ss,SSS},输出类似:2011-10-18 22:10:28,921

// %r: 输出自应用启动到输出该log信息耗费的毫秒数

// %c: 输出日志信息所属的类目,通常就是所在类的全名

// %t: 输出产生该日志事件的线程名

// %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。

// %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字符,就从左边交远销出的字符截掉
log4j.rootLogger=WARN,Console,File
log4j.rootLogger = <级别>,[appenderName]
基础日志log4j.rootLogger
log4j.logger.com.wosai.teach=debug,console
log4j.logger.com.wosai.teach.core=debug,core
log4j.logger.[包地址] = <级别>,[appenderName]
分包日志log4j.logger
org.apache.log4j.ConsoleAppender
Threshold=info
Target=System.out
Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.Threshold=info

log4j.appender.Console.Target=System.out

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

log4j.appender.Console.layout.ConversionPattern=[k12Platform] %d %-5p [%C.%M()] (%F:%L) %3x - %m%n
org.apache.log4j.RollingFileAppender
Threshold=error
File=${project}WEB-INF/logs/app.log
File
# log4j-appender File

log4j.appender.File=org.apache.log4j.RollingFileAppender

log4j.appender.File.Append=true

#log4j.appender.File.File=k12app.log

log4j.appender.File.File=${catalina.base}/logs/k12app.log

log4j.appender.File.Encoding=UTF-8

log4j.appender.File.Threshold=error

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

log4j.appender.File.layout.ConversionPattern=[k12Platform] %d %-5p [%C.%M()] (%F:%L) %3x - %m%n

log4j.appender.File.MaxBackupIndex=10

log4j.appender.File.MaxFileSize=10MB
core
log4j.appender.test.MaxFileSize=10240KB
log4j.appender.test.MaxBackupIndex=2
最大10M,分2个循环文件
appender
[k12Platform] %d %-5p [%C.%M()] (%F:%L) %3x - %m%n
[k12Platform] 2015-11-16 15:15:16,933 FATAL [test.Test.log4jShowLog()] (Test.java:55)     - Just testing a log message with priority set to FATAL
[k12Platform] 2015-11-16 15:15:16,933 FATAL [test.Test.log4jShowLog()] (Test.java:55) - Just testing a log message with priority set to FATAL
日志格式
扩展
日志信息配置
#level: DEBUG < INFO < WARN < ERROR < FATAL



# log4j-rootLogger,logger

log4j.rootLogger=debug,Console,File

log4j.logger.test=debug,Console



# log4j-appender Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.Threshold=info

log4j.appender.Console.Target=System.out

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

log4j.appender.Console.layout.ConversionPattern=[k12Platform] %d %-5p [%C.%M()] (%F:%L) %3x - %m%n



# log4j-appender File

log4j.appender.File=org.apache.log4j.RollingFileAppender

log4j.appender.File.Append=true

#log4j.appender.File.File=k12app.log

log4j.appender.File.File=${catalina.base}/logs/k12app.log

log4j.appender.File.Encoding=UTF-8

log4j.appender.File.Threshold=error

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

log4j.appender.File.layout.ConversionPattern=[k12Platform] %d %-5p [%C.%M()] (%F:%L) %3x - %m%n

log4j.appender.File.MaxBackupIndex=10

log4j.appender.File.MaxFileSize=10MB



# ReadMe.md

## log4j的ConversionPattern参数的意义

#-X: X信息输出时左对齐 

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

#%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2011-10-18 22:10:28,921 

#%r: 输出自应用启动到输出该log信息耗费的毫秒数 

#%c: 输出日志信息所属的类目,通常就是所在类的全名 

#%t: 输出产生该日志事件的线程名 

#%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。 

#%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字符,就从左边交远销出的字符截掉
Log4j 2 介绍
Log4j2使用总结
log4j 2
log4j的ConversionPattern参数的意义
-X: X信息输出时左对齐 

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

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2011-10-18 22:10:28,921 

%r: 输出自应用启动到输出该log信息耗费的毫秒数 

%c: 输出日志信息所属的类目,通常就是所在类的全名 

%t: 输出产生该日志事件的线程名 

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。 

%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字符,就从左边交远销出的字符截掉
材料