log4j 介绍(7)-- Example篇

:lol: 在实际项目中,一般会采用读取配置文件的方式进行log控制,最常用的是log4j.properties

第一步: 新建一个java工程,名字就叫: logExample1
第二步: 在src目录下新建log4j.properties文件
代码如下:
#define the root logger
#appender's name is file and the level is INFO
log4j.rootLogger = INFO, file


log4j.appender.file = org.apache.log4j.RollingFileAppender

#the output file's name and directory
log4j.appender.file.File = ./out.log
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n


第三步:创建MyApp类,代码如下
package com.noodle.util;
import org.apache.log4j.Logger;
import com.noodle.pojo.Movie;

public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class);

public static void main(String[] args){
logger.info("application begin in main");
Movie movie = new Movie();
movie.watchIt();
logger.info("application end in main");
}
}


第四步:创建Movie类, 代码如下
package com.noodle.pojo;

public class Movie {
static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Movie.class);

public void watchIt(){
logger.warn("Watch movie");
}
}


第五步: 结果在logExample1目录下生成out.log里面的内容是:
INFO [main] (MyApp.java:12) - application begin in main
WARN [main] (Movie.java:7) - Watch movie
INFO [main] (MyApp.java:17) - application end in main

如果要跟踪一个事件,单独为这个事件,设定日志。 那么需要一个Logger instance 穿插于各个class之间,这样在properites里如何去写呢?

log4j.properties:
#define the root logger
#appender's name is file and the level is INFO
log4j.rootLogger = INFO, file


log4j.appender.file = org.apache.log4j.RollingFileAppender

#the output file's name and directory
log4j.appender.file.File = ./out.log
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n


log4j.logger.eventLogName = INFO, eventlog

#Properties are case sensitive.
#log4j.logger.EVENTLOGNAME = INFO, eventlog
#that is unable to print the log messages in the console.

log4j.appender.eventlog = org.apache.log4j.ConsoleAppender
log4j.appender.eventlog.layout = org.apache.log4j.PatternLayout
log4j.appender.eventlog.layout.ConversionPattern = %d{dd-MM-yyyy}, %d{HH:mm:ss}, %-5.5p, %m %n


MyApp.java

package com.noodle.util;
import org.apache.log4j.Logger;

import com.noodle.help.AppConstant;
import com.noodle.pojo.Movie;

public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class);
static Logger eventlogger = Logger.getLogger(AppConstant.EVENT);

public static void main(String[] args){
logger.info("application begin in main");
eventlogger.info("this is the begin of the eventlog");
Movie movie = new Movie();
movie.watchIt();
eventlogger.info("this is the end of the eventlog");
logger.info("application end in main");
}
}


Movie.java

package com.noodle.pojo;

public class Movie {
static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Movie.class);

public void watchIt(){
logger.warn("Watch movie");
}
}


定义一个AppConstant.java

[code]package com.noodle.help;

public class AppConstant {
public final static String EVENT = "eventLogName";
}[/code]

这样,去运行以下,得到的结果是:
在out.log日志里输出:

INFO [main] (MyApp.java:12) - application begin in main
INFO [main] (MyApp.java:13) - this is the begin of the eventlog
WARN [main] (Movie.java:7) - Watch movie
INFO [main] (MyApp.java:16) - this is the end of the eventlog
INFO [main] (MyApp.java:17) - application end in main

而同时在控制台里输出了:
18-08-2009, 20:37:20, INFO , this is the begin of the eventlog
18-08-2009, 20:37:20, INFO , this is the end of the eventlog

:lol: Enjoy it!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值