log4j日志在java控制台输出,简单实用

                                                    log4j日志在java控制台输出,简单实用

1、log4j输出有2中方式:第一种是将日志信息保存在一个文本当中;第二种是输出到控制台中。下面介绍第二种方式。

2、在控制台输出log4j日志信息,是开发项目中常用的也是比不可少的也是必须会的一个技术点。

3、2种log4j文件加载方式,以下代码可以直接运用在项目当中。理论东西就不多说了直接看代码。几个步骤就完成。

java QQ群:180258862

4、准备log4j-contrl.propertes 文件,其目录为src/log4j-contrl.propertes:

log4j.appender.encoding = UTF-8
log4j.rootLogger=INFO,CONSOLE,APPLOG,ERROR,ERRORLOG
#log4j.rootLogger=ERROR,ERRORLOG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n

log4j.appender.APPLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APPLOG.Append=true
log4j.appender.APPLOG.DatePattern='_'yyyyMMdd'.log'
log4j.appender.APPLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.APPLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n
log4j.appender.APPLOG.File=/data1/logs/tomcat/sync/AppAccessLog

log4j.appender.ADMINLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ADMINLOG.Append=true
log4j.appender.ADMINLOG.DatePattern='_'yyyyMMdd'.log'
log4j.appender.ADMINLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.ADMINLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n
log4j.appender.ADMINLOG.File=/data1/logs/tomcat/sync/AdminAccessLog

log4j.appender.ERRORLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERRORLOG.Threshold=ERROR
log4j.appender.ERRORLOG.Append=true
log4j.appender.ERRORLOG.DatePattern='_'yyyyMMdd'.log'
log4j.appender.ERRORLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.ERRORLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n
log4j.appender.ERRORLOG.File=/data1/logs/tomcat/sync/AppErrorLog

log4j.logger.com.ibatis = DEBUG  
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG  
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG  
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG  
log4j.logger.java.sql.Connection = DEBUG  
log4j.logger.java.sql.Statement = DEBUG  
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG 


5、创建一个servlet来启动日志文件,当启动服务器时进行加载并初始化日志文件

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
/**
 * log4j控制台文件输出,初始化配置文件
 * @author Administrator
 *
 */
public class Log4jInit extends HttpServlet {

public void destroy() {
super.destroy(); 
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {}

public void init() throws ServletException {
String prefix = getServletContext().getRealPath("/");
String file = getServletConfig().getInitParameter("log4j"); //是web.xml中的参数
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
Logger log = Logger.getLogger(Log4jInit.class);
log.info("Logg4j日志已经初始化。");
}
}

 6、在web.xml中配置servlet并初始化该servelt文件:

<servlet>
<servlet-name>Log4jInit</servlet-name>
<servlet-class>com.java.log.Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/classes/log4j-contrl.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>Log4jInit</servlet-name>
<url-pattern>/log/logfj</url-pattern>
</servlet-mapping>

7、测试log4j日志(这里测试只能通过web形式访问在能输出日志,在main方法中貌似不行但是可以通过下面介绍的方法(序列9)可以):

 import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4j extends HttpServlet {
   private static  final transient Logger log = Logger.getLogger(Log4j .class);

public void destroy() {
super.destroy();
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
        
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
log.info("记录日志信息,将在控制台输出");
      log.error("可以记录错误信息,输出字体为控制");
out.flush();
out.close();
}
public void init() throws ServletException {

}
}

8、输出结果:

2013-05-01 14:08:55 INFO  [http-9090-1] com.java.md.KeyMDF  - 记录日志信息,将在控制台输出
2013-05-01 14:08:55 ERROR [http-9090-1] com.java.md.KeyMDF  - 可以记录错误信息,输出字体为控制


9、第二种方式加载log4j-contrl.propertes文件:

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

 public class TestLog4j {

private static  final transient Logger log = Logger.getLogger(TestLog4j .class);

 public static void main(String[] args)throws InvalidKeyException, IllegalBlockSizeException, NoSuchAlgorithmException, UnsupportedEncodingException, BadPaddingException, NoSuchPaddingException {

                  PropertyConfigurator.configure("src/log4j.properties");   
            log.info("记录日志信息,将在控制台输出");
   log.error("可以记录错误信息,输出字体为控制");
}

}






  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sencerity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值