用log4j输出system.out的日志
2016-12-16 11:30
453 查看
对于一些老项目,用的都是system.out输出日志,并且用的都是tomcat自带的logging.properties配置文件,但是这样有一个弊端,对于最关键的错误日志和输出日志tomcat记录日志的方式为每次启动服务才会检查是否生成新的文件,这样就会导致stdout.log和stderr.log只有一个,随着时间越来越大,毕竟生产服务器不会每天启动停止。这样我们就需要用log4j去把system.out的日志记录下来,具体步骤如下:
1,引入log4j的jar包,这个就不需要说了,直接附配置文件:
log4j.rootLogger=INFO,Stdout,R
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/pboc.log
log4j.appender.R.datePattern='.'yyyy-MM-dd'.txt'
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
2,增加转化类,放置位置随便:
public class LogSystem implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
}
private void log(Object info) {
LogFactoryImpl.getLog(getClass()).info(info);
}
public void contextInitialized(ServletContextEvent event) {
PrintStream printStream = new PrintStream(System.out) {
public void println(boolean x) {
log(Boolean.valueOf(x));
}
public void println(char x) {
log(Character.valueOf(x));
}
public void println(char[] x) {
log(x == null ? null : new String(x));
}
public void println(double x) {
log(Double.valueOf(x));
}
public void println(float x) {
log(Float.valueOf(x));
}
public void println(int x) {
log(Integer.valueOf(x));
}
public void println(long x) {
log(x);
}
public void println(Object x) {
log(x);
}
public void println(String x) {
log(x);
}
};
System.setOut(printStream);
System.setErr(printStream);
}
}
3,修改web.xml,增加一个监听,指向转化类的路径:
<listener>
<listener-class>com.sinosoft.log4j.LogSystem</listener-class>
</listener>
4,这样就配置完毕,但是还需要把tomcat自带的stdout.log关掉(本地需要用服务启动才会有这个日志生成):
双击bin/tomcat7w.exe-——>选logging----->将redirect stdout置为空(原来为auto)
1,引入log4j的jar包,这个就不需要说了,直接附配置文件:
log4j.rootLogger=INFO,Stdout,R
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/pboc.log
log4j.appender.R.datePattern='.'yyyy-MM-dd'.txt'
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
2,增加转化类,放置位置随便:
public class LogSystem implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
}
private void log(Object info) {
LogFactoryImpl.getLog(getClass()).info(info);
}
public void contextInitialized(ServletContextEvent event) {
PrintStream printStream = new PrintStream(System.out) {
public void println(boolean x) {
log(Boolean.valueOf(x));
}
public void println(char x) {
log(Character.valueOf(x));
}
public void println(char[] x) {
log(x == null ? null : new String(x));
}
public void println(double x) {
log(Double.valueOf(x));
}
public void println(float x) {
log(Float.valueOf(x));
}
public void println(int x) {
log(Integer.valueOf(x));
}
public void println(long x) {
log(x);
}
public void println(Object x) {
log(x);
}
public void println(String x) {
log(x);
}
};
System.setOut(printStream);
System.setErr(printStream);
}
}
3,修改web.xml,增加一个监听,指向转化类的路径:
<listener>
<listener-class>com.sinosoft.log4j.LogSystem</listener-class>
</listener>
4,这样就配置完毕,但是还需要把tomcat自带的stdout.log关掉(本地需要用服务启动才会有这个日志生成):
双击bin/tomcat7w.exe-——>选logging----->将redirect stdout置为空(原来为auto)
相关文章推荐
- 把system.out.println的内容用log4j输出到tomcat日志里方法
- windows下使用log4j将日志输出到文件,包括system.out
- (web日志)把后台的日志System.out输出到网页servlet
- 把在程序中的System.out.print()的信息自动转成log4j日志信息
- System.out.println() 和 log4j 的 Logger 循环输出100万次。
- 简单的把System.out.println的输出内容写进日志中
- system.out和logger两种日志输出方式的不同
- catalina.out文件过大!!使用Log4j管理tomcat日志输出
- Weblogic配置 System.out日志输出到文件
- 把在程序中的System.out.print()的信息自动转成log4j日志信息
- 把在程序中的System.out.print()的信息自动转成log4j日志信息
- 如何在Windows下实现将System.out输出到指定日志文件
- shell小工具查看Hadoop中System.out输出的日志
- 关闭tomcat的stdout日志,并将System.out.println的内容输出到指定文件
- log4j相比System.out的优势
- System.out.println() 输出中文乱码
- log4j日志输出教程
- 【转】 log4j输出多个自定义日志文件
- log4j中文日志乱码--输出到文件的日志,中文部分全是问号乱码的处理
- SSM框架day01——011——log4j的日志输出控制文件、012——log4j2的日志输出控制文件解析