JAVA程序开发,经常用到日志输出,在一个所谓的软件公司里大多会有自己一套配置风格,读取配置文件再对日志属性进行初始化,这样固然好,但有时可能并不需要小题大做,然log4j这个包一定会经常用到,以下就是一个简单应用。前题,下载一个log4j的包,本人用log4j-1.2.9.jar。 新建一个java项目,内容如下,根据实际需要改本地的包名和类名。
- /**
- * filename : MiProperty.java
- * Title : 北京minstar软件工作室
- * Description: 关于log4j包的最简单应用
- * @Copyright : Copyright (c) 2008,北京minstar软件工作室
- * Company : 北京minstar软件工作室
- * @author : Zhao.Jian
- * Date : 2007-8-16
- * @version 1.0.0.0
- * @Development Environment : Eclipse 3.1.0
- */
- package app;
- import java.io.FileInputStream;
- import java.util.Properties;
- import org.apache.log4j.Logger;
- import org.apache.log4j.PropertyConfigurator;
- public class logjTest {
- public static final Logger logger = Logger.getLogger(logjTest.class);
- public static void main(String args[])throws Exception{
- String configFile = "log4j.properties";
- PropertyConfigurator.configure(configFile);
- logger.info("测试log4j之包的使用!");
- Properties perties = new Properties();
- FileInputStream fis = new FileInputStream(configFile);
- perties.load(fis);
- String str=perties.getProperty("log4j.rootLogger");
- logger.info("测试获取key值,如log4j.rootLogger="+str);
- }
- }
/**
* filename : MiProperty.java
* Title : 北京minstar软件工作室
* Description: 关于log4j包的最简单应用
* @Copyright : Copyright (c) 2008,北京minstar软件工作室
* Company : 北京minstar软件工作室
* @author : Zhao.Jian
* Date : 2007-8-16
* @version 1.0.0.0
* @Development Environment : Eclipse 3.1.0
*/
package app;
import java.io.FileInputStream;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class logjTest {
public static final Logger logger = Logger.getLogger(logjTest.class);
public static void main(String args[])throws Exception{
String configFile = "log4j.properties";
PropertyConfigurator.configure(configFile);
logger.info("测试log4j之包的使用!");
Properties perties = new Properties();
FileInputStream fis = new FileInputStream(configFile);
perties.load(fis);
String str=perties.getProperty("log4j.rootLogger");
logger.info("测试获取key值,如log4j.rootLogger="+str);
}
}
属性文件名:log4j.properties,内容:
- ### direct log messages to 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{ABSOLUTE} %5p %c{1}:%L - %m%n
- #%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
- ### direct messages to file hibernate.log ###
- #log4j.appender.file=org.apache.log4j.FileAppender
- #log4j.appender.file.File=hibernate.log
- #log4j.appender.file.layout=org.apache.log4j.PatternLayout
- #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- ### set log levels - for more verbose logging change 'info' to 'debug' ###
- log4j.rootLogger=debug,R,stdout
- #####log4j.logger.net.sf.hibernate=info
- ####????
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=logs/logtest.log
- log4j.appender.R.MaxFileSize=1000KB
- log4j.appender.R.MaxBackupIndex=5
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d [%p] %c -%m%n
- #log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
- log4j.appender.R.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}] %p %t %c - %m%n
- ### log just the SQL
- #log4j.logger.net.sf.hibernate.SQL=debug
- ### log JDBC bind parameters ###
- log4j.logger.net.sf.hibernate.type=info
- ### log schema export/update ###
- log4j.logger.net.sf.hibernate.tool.hbm2ddl=debug
- ### log cache activity ###
- #log4j.logger.net.sf.hibernate.cache=debug
- ### enable the following line if you want to track down connection ###
- ### leakages when using DriverManagerConnectionProvider ###
- #log4j.logger.net.sf.hibernate.connection.DriverManagerConnectionProvider=trace
- #log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
- #log4j.appender.SOCKET.RemoteHost=localhost
- #log4j.appender.SOCKET.Port=5001
- #log4j.appender.SOCKET.LocationInfo=true
- # Set up for Log Facter 5
- #log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
- #log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
### direct log messages to 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{ABSOLUTE} %5p %c{1}:%L - %m%n #%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n ### direct messages to file hibernate.log ### #log4j.appender.file=org.apache.log4j.FileAppender #log4j.appender.file.File=hibernate.log #log4j.appender.file.layout=org.apache.log4j.PatternLayout #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=debug,R,stdout #####log4j.logger.net.sf.hibernate=info ####???? log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=logs/logtest.log log4j.appender.R.MaxFileSize=1000KB log4j.appender.R.MaxBackupIndex=5 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%p] %c -%m%n #log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n log4j.appender.R.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}] %p %t %c - %m%n ### log just the SQL #log4j.logger.net.sf.hibernate.SQL=debug ### log JDBC bind parameters ### log4j.logger.net.sf.hibernate.type=info ### log schema export/update ### log4j.logger.net.sf.hibernate.tool.hbm2ddl=debug ### log cache activity ### #log4j.logger.net.sf.hibernate.cache=debug ### enable the following line if you want to track down connection ### ### leakages when using DriverManagerConnectionProvider ### #log4j.logger.net.sf.hibernate.connection.DriverManagerConnectionProvider=trace #log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender #log4j.appender.SOCKET.RemoteHost=localhost #log4j.appender.SOCKET.Port=5001 #log4j.appender.SOCKET.LocationInfo=true # Set up for Log Facter 5 #log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout #log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
log4j.properties中几处值得关注。
1:log4j.appender.R.File=logs/logtest.log
日志输出路径及命名,以下为相对路径法,根据实际情况改之。
2:log4j.appender.R.MaxFileSize=1000KB
每个日志文件大小。
3:log4j.appender.R.MaxBackupIndex=5
每生成多少个日志滚动,会生成一些logtest.log1, logtest.log2,但不会有logtest.log6,如果配置成10,不会有logtest.log11。
4:log4j.appender.R.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}] %p %t %c - %m%n
日志输出时日期的风格之类的,通常我不改,其它还有一些属性设置,网上有很多文章介绍,此处以高效,简洁,共享为宗旨,相信该文值得再次参考。