u010511715 2009-05-12 10:13
浏览 235
已采纳

如何配置log4j

我的环境是struts2.1.6, 使用commons-logging-1.1.1.jar

我配置log4j的步骤如下:

  1. 将log4j-1.2.9.jar拷贝到WEB-INF/lib目录下
  2. 在WEB-INF/classes下建立log4j.properties文件,文件内容如下:

[code="java"]log4j.rootLogger=ERROR, errfile

log4j.appender.errfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errfile.File=D:\bugu_err.log
log4j.appender.errfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errfile.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n[/code]

  1. java代码如下:
    [code="java"]public class ExceptionLogInterceptor extends AbstractInterceptor
    {
    private final Log log = LogFactory.getLog(getClass());
    static Logger logger = Logger.getLogger(ExceptionLogInterceptor.class.getName());

    public String intercept(ActionInvocation invocation) throws Exception
    {
    String result = "";
    try {

        result = invocation.invoke();
    
    } catch (Exception e) {
        System.out.print("exception log");
        log.error("log4j:" + e.getMessage());
        logger.error("test log4j 1.2.9");
    }
    
    return result;
    

    }
    }[/code]

问题:运行程序之后并没有生成D:\bugu_err.log文件(控制台已打出"exception log"信息,即log.error("log4j:" + e.getMessage()) 和 logger.error("test log4j 1.2.9")有被执行到)

请教:应该如何正确配置log4j,以及代码里面应该如何正确调用log4j写log?谢谢!

[b]问题补充:[/b]
to lwx_1987:

怎样"在应用程序启动时对log4j进行初始化"?能否详细点?

  • 写回答

1条回答 默认 最新

  • liweixing87 2009-05-12 11:07
    关注

    配置文件内容:

    LOGGER

    configure root Logger

    log4j.rootLogger=INFO,console,file,errorfile
    #define a logger named accessLogger
    log4j.logger.accessLogger=INFO,accessfile
    log4j.logger.serverInfoLogger=INFO,serverInfoFile

    APPENDERS

    define an appender named console, which is set to be a ConsoleAppender

    log4j.appender.console=org.apache.log4j.ConsoleAppender

    define an appender named file, which is set to be a DailyRollingFileAppender

    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.file.File=${log4jHome}/info/syslog
    log4j.appender.file.DatePattern=yyyy-MM-dd'.txt'
    log4j.appender.file.Append=true

    log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.errorfile.File=${log4jHome}/error/log
    log4j.appender.errorfile.DatePattern=yyyy-MM-dd'.txt'
    log4j.appender.errorfile.Threshold=ERROR
    log4j.appender.file.Append=true

    log4j.appender.accessfile=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.accessfile.File=${log4jHome}/info/accesslog
    log4j.appender.accessfile.DatePattern=yyyy-MM-dd'.txt'

    log4j.appender.serverInfoFile=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.serverInfoFile.File=${log4jHome}/info/serverInfoFile
    log4j.appender.serverInfoFile.DatePattern=yyyy-MM-dd'.txt'


    java代码
    在应用程序启动时对log4j进行初始化:
    public void contextInitialized(ServletContextEvent ctxEvt){
    ServletContext ctx = ctxEvt.getServletContext();
    String WEB_ROOT = ctx.getRealPath("/");
    //log4j文件位置
    String log4jFile = WEB_ROOT + "WEB-INF" + File.separator + "cfg"+ File.separator + "log4j.properties";
    //日志输出位置
    String log4jHome = WEB_ROOT + "WEB-INF" + File.separator + "logs";
    //对日志输出位置进行set
    System.setProperty("log4jHome", log4jHome);
    //进行配置
    PropertyConfigurator.configure(log4jFile);
    }
    这样就OK了!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划