Log4j常用配置及使用
Log4j常用配置及使用
2016-12-14
目录
1 添加log4j依赖
2 使用代码配置并调用log
2.1 代码配置LogConfiguration.java
2.2 调用
2.3 结果
3 使用Properties文件配置并调用
3.1 文件配置log4j.properties
3.2 调用
3.3 结果
4 按输出级别的种类保存内容到不同目的地
4.1 文件配置log4j.properties
4.2 调用
4.3 结果
参考
1 添加log4j依赖
maven的pom.xml文件中添加log4j依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>provided</scope>
</dependency>
2 使用代码配置并调用log
2.1 代码配置LogConfiguration.java
import java.util.Properties;
import org.apache.log4j.PropertyConfigurator; public class LogConfiguration {
public static void initLog(String logFilePath){
//声明日志文件存储路径以及文件名、格式
Properties prop = new Properties();
//配置日志输出的格式
prop.setProperty("log4j.rootLogger","info, toConsole, toFile");
prop.setProperty("log4j.appender.file.encoding","UTF-8" ); prop.setProperty("log4j.appender.toConsole","org.apache.log4j.ConsoleAppender");
prop.setProperty("log4j.appender.toConsole.Target","System.out");
prop.setProperty("log4j.appender.toConsole.layout","org.apache.log4j.PatternLayout ");
prop.setProperty("log4j.appender.toConsole.layout.ConversionPattern","[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n"); prop.setProperty("log4j.appender.toFile.file", logFilePath);
//每天产生一个日志文件
prop.setProperty("log4j.appender.toFile", "org.apache.log4j.DailyRollingFileAppender");
//服务器启动日志是追加,false:服务器启动后会生成日志文件把老的覆盖掉
prop.setProperty("log4j.appender.toFile.Append","true");
prop.setProperty("log4j.appender.toFile.Threshold", "info");
prop.setProperty("log4j.appender.toFile.layout", "org.apache.log4j.PatternLayout");
prop.setProperty("log4j.appender.toFile.layout.ConversionPattern", "[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n");
//[2017-03-31 14:10:44] [ERROR] HttpResponseAnalyze:31 - Not equal
//prop.setProperty("log4j.appender.toFile.layout.ConversionPattern", "[%d{yyyy-MM-dd HH:mm:ss}] [%p] %c{1}:%L - %m%n");
//设置每天生成一个文件名后添加的名称,备份名称:年月日.log
prop.setProperty("log4j.appender.toFile.DatePattern","'.'yyyy-MM-dd'.log'");
//使配置生效 PropertyConfigurator.configure(prop); } }
2.2 调用
import org.apache.log4j.Logger;
public class TestLog {
static Logger logger = Logger.getLogger(TestLog.class.getName());
public static void main(String[] args) {
LogConfiguration.initLog("D:\\log\\result.log");
logger.info("log info");
logger.warn("log warn");
logger.error("log error");
try {
Thread.sleep(2000);
}
catch(Exception ex)
{}
logger.info("log1 info");
logger.warn("log1 warn");
logger.error("log1 error");
}
}
2.3 结果
输出到Ecliplse的Console界面和文件D:\log\result.log中,内容如下:
[2016-12-14 16:03:34] [INFO] log info
[2016-12-14 16:03:34] [WARN] log warn
[2016-12-14 16:03:34] [ERROR] log error
[2016-12-14 16:03:36] [INFO] log1 info
[2016-12-14 16:03:36] [WARN] log1 warn
[2016-12-14 16:03:36] [ERROR] log1 error
另外,由于配置了每天生成一个备份,系统时间切一天后日后,再运行,原先的result.log会变成result.log.2016-12-13.log,新的日志会重新放到新建的日志文件result.log
3 使用Properties文件配置并调用log
3.1 文件配置log4j.properties
log4j.rootLogger=INFO, toConsole, toFile
log4j.appender.file.encoding=UTF-8 log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
log4j.appender.toConsole.Target=System.out
log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n log4j.appender.toFile.file=D:\\log\\result.log
#Daily one log file
log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.toFile.Append=true
log4j.appender.toFile.Threshold=info
log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'
3.2 调用
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; public class TestLog {
static Logger logger = Logger.getLogger(TestLog.class.getName()); public static void main(String[] args) {
PropertyConfigurator.configure( "D:\\Users\\...\\config\\log4j.properties" );
logger.info("log info");
logger.warn("log warn");
logger.error("log error"); try {
Thread.sleep(2000);
}
catch(Exception ex)
{} logger.info("log1 info");
logger.warn("log1 warn");
logger.error("log1 error");
}
}
3.3 结果
和上面一致
4 按输出级别的种类保存内容到不同目的地
从高到低:ERROR、WARN、INFO、DEBUG
- ERROR 为严重错误 主要是程序的错误
- WARN 为一般警告,比如session丢失
- INFO 为一般要显示的信息,比如登录登出
- DEBUG 为程序的调试信息
4.1 文件配置log4j.properties
log4j.rootLogger=INFO, toConsole
log4j.appender.file.encoding=UTF-8 log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
log4j.appender.toConsole.Target=System.out
log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n log4j.logger.myError=ERROR, toFile
log4j.appender.toFile.file=D:\\log\\Errors.log
#Daily one log file
log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.toFile.Append=true
log4j.appender.toFile.Threshold=info
log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'
4.2 调用
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; public class TestLog {
static Logger logger = Logger.getLogger(TestLog.class.getName());
static Logger errorLogger=Logger.getLogger("myError"); public static void main(String[] args) {
PropertyConfigurator.configure( "D:\\Users\\...\\config\\log4j.properties" );
logger.info("log info");
logger.warn("log warn");
logger.error("log error"); errorLogger.info("myError info");
errorLogger.warn("myError warn");
errorLogger.error("myError error");
}
}
4.3 结果
Eclipse的Console界面
[2016-12-13 17:45:06] [INFO] log info
[2016-12-13 17:45:06] [WARN] log warn
[2016-12-13 17:45:06] [ERROR] log error
[2016-12-13 17:45:06] [ERROR] myError error
Errors.log
[2016-12-13 17:45:06] [ERROR] myError error
参考
[2] log4j.properties log4j.xml 路径问题
[4] log4j简单案例
//设置每天生成一个文件名后添加的名称,备份名称:年月日.log
Log4j常用配置及使用的更多相关文章
- log4j常用配置以及日志文件保存位置
log4j.rootLogger=INFO,CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender ...
- (三)log4j常用配置
控制台(console) log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = ...
- 【转】logback 常用配置详解(序)logback 简介
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- commons-logging和Log4j 日志管理/log4j.properties配置详解
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
- logback常用配置详解及logback简介
logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这 ...
- java日志框架log4j详细配置及与slf4j联合使用教程
最后更新于2017年02月09日 一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” <d ...
- Tomcat记录-tomcat常用配置详解和优化方法(转载)
常用配置详解 1 目录结构 /bin:脚本文件目录. /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载). /conf:存放配置文件,最重要的是serv ...
- [转]logback常用配置简介
logback是一套日志框架,由log4j的优化版,由同一个作者开发,在速度和性能上都超过其他日志框架,再结合slf4j,已成为当前最流行的日志框架. Logback最常用就是在classpath定义 ...
- log4j日志配置(按天/按日)
项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式.下面就总结一下log4j常用的配置参数以及切分日志的不同方式. ...
随机推荐
- Android遍历获取指定目录的文件(转)
// 获取当前目录下所有的mp4文件 public static Vector<String> GetVideoFileName(String fileAbsolutePath) { Ve ...
- eclipse svn插件
eclipse svn插件 CreateTime--2018年4月22日23:09:42 Author:Marydon 下载地址:eclipse svn插件 将svn插件目录直接拷贝到eclips ...
- 简单的 Helper 封装 -- SecurityHelper 安全助手:封装加密算法(MD5、SHA、HMAC、DES、RSA)
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Wen. ...
- 老男孩Linux.shell.RHCE运维初中高级50G附解压密码
学习Linux,好的教程.使学习事半功倍! 老男孩Linux.shell.RHCE运维初中高级 下载地址: http://pan.baidu.com/s/1hsQOb2W 密码: h4hs 解压密码: ...
- 每一个软件开发人员绝对必须掌握的关于 Unicode 和字符集的最基础的知识
2013-02-05 14:18 48人阅读 评论(0) 收藏 举报 关键字: Unicode, Character Set, 字符集, UTF-8, ANSI, ASCII, UTF-7 ...
- WinForm如何调用Web Service
参考地址 今天看了李天平关于WinForm调用Web Service的代码,我自己模仿做一个代码基本都是复制粘贴的,结果不好使.郁闷的是,又碰到那个该死的GET调用Web Service,我想肯定又是 ...
- word使用宏定义来统一设置图片大小
1. 首先手动拖拽将图片调到需要的格式,点击图片在格式选项中查看图片的宽高 2. 视图中点击宏新建 3. 编辑框中输入以下代码并保存,由于我只需要统一宽度,所以将统一高度的代码注释 Sub 图片格式统 ...
- nginx error: upstream prematurely closed connection while reading response header from upstream
本篇文章由:http://xinpure.com/nginx-error-upstream-prematurely-closed-connection-while-reading-response-h ...
- HDUOJ----John
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- pandas 的数据结构Series与DataFrame
pandas中有两个主要的数据结构:Series和DataFrame. [Series] Series是一个一维的类似的数组对象,它包含一个数组数据(任何numpy数据类型)和一个与数组关联的索引. ...