Java日志记录log4j最简明教程
最近在搞一个项目架设,希望从构建一个项目方方面面都彻底研究透,增长实战经验。
今天先研究一下日志的构建,这里选择了log4j--java方面比较流行的log框架,功能
很强大,使用起来也很方便了
废话少说,先看看一个史上最简单的log例子,看看我是如何用最简洁的设计实现将异常
等信息写入日志文件的。
项目文件结构
--------TestLog
|----src
| |-com/janeky/log/Log.java
| |-log4j.properties
|----bin
| |-com/janeky/log/Log
|----lib
| |-log4j-1.2.11.jar
Eclipse新建一个java project TestLog
新建一个com.janeky.log包
导入log4j的jar包
包里新建一个Log.java
view plaincopy to clipboardprint?
package com.janeky.log;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
/**
* @author janeky
* Log演示程序
*/
public class Log {
//Logger实例
private Logger loger;
//将Log类封装成单实例的模式,独立于其他类。以后要用到日志的地方只要获得Log的实例就可以方便使用
private static Log log;
//构造函数,用于初始化Logger配置需要的属性
private Log()
{
//获得当前目录路径
String filePath=this.getClass().getResource("/").getPath();
//找到log4j.properties配置文件所在的目录(已经创建好)
filePath=filePath.substring(1).replace("bin", "src");
//获得日志类loger的实例
loger=Logger.getLogger(this.getClass());
//loger所需的配置文件路径
PropertyConfigurator.configure(filePath+"log4j.properties");
}
static Log getLoger()
{
if(log!=null)
return log;
else
return new Log();
}
//测试函数
public static void main(String args[])
{
Log log=Log.getLoger();
try
{
//引发异常
int a=2/0;
}catch(Exception e)
{
//控制台打印异常信息
e.printStackTrace();
//写入到日子文件
log.loger.error("error", e);
}
}
}
package com.janeky.log;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
/**
* @author janeky
* Log演示程序
*/
public class Log {
//Logger实例
private Logger loger;
//将Log类封装成单实例的模式,独立于其他类。以后要用到日志的地方只要获得Log的实例就可以方便使用
private static Log log;
//构造函数,用于初始化Logger配置需要的属性
private Log()
{
//获得当前目录路径
String filePath=this.getClass().getResource("/").getPath();
//找到log4j.properties配置文件所在的目录(已经创建好)
filePath=filePath.substring(1).replace("bin", "src");
//获得日志类loger的实例
loger=Logger.getLogger(this.getClass());
//loger所需的配置文件路径
PropertyConfigurator.configure(filePath+"log4j.properties");
}
static Log getLoger()
{
if(log!=null)
return log;
else
return new Log();
}
//测试函数
public static void main(String args[])
{
Log log=Log.getLoger();
try
{
//引发异常
int a=2/0;
}catch(Exception e)
{
//控制台打印异常信息
e.printStackTrace();
//写入到日子文件
log.loger.error("error", e);
}
}
}
在src文件夹中新建一个文本文档 log4j.properties
view plaincopy to clipboardprint?
#定义DEBUG优先级,R为日志输出目的的
log4j.rootLogger=DEBUG, R
#设置日志输出类型,为文件类型
log4j.appender.R=org.apache.log4j.FileAppender
#设置日志文件名my.log
log4j.appender.R.file=my.log
#每次在文件尾写入新的日志信息
log4j.appender.R.Append=true
#日志输出信息格式类型
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#日志输出信息格式为 换行、换行、日期、优先级、[类名]、日志信息、换行
log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n
#定义DEBUG优先级,R为日志输出目的的
log4j.rootLogger=DEBUG, R
#设置日志输出类型,为文件类型
log4j.appender.R=org.apache.log4j.FileAppender
#设置日志文件名my.log
log4j.appender.R.file=my.log
#每次在文件尾写入新的日志信息
log4j.appender.R.Append=true
#日志输出信息格式类型
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#日志输出信息格式为 换行、换行、日期、优先级、[类名]、日志信息、换行
log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n
运行吧,出错了,恭喜你成功了,去TestLog目录下寻找my.log日志信息吧
以后再任何需要记录日志的地方只要使用下面语句就
补充:软件开发 , Java ,