lyuaong 2011-08-09 23:59 采纳率: 0%
浏览 171
已采纳

诚信请教Log4输出日志文件问题,急,急,急

我用struts2+ibatis搭建的框架,在日志文件输出的时候遇到这个问题很是纠结,希望大家帮个忙解释哈……,谢谢了

首先我在log4的资源文件中配置如下:
[img]http://dl.iteye.com/upload/attachment/533623/370df173-5525-3a13-925f-206474bedcce.jpg[/img]
然后我启动项目,我测试日志输出的代码写在登录方法里面代码如下:
[img]http://dl.iteye.com/upload/attachment/533626/c9a12f46-cb94-39e0-a22a-7dc404790c17.jpg[/img]

然后运行发现:有日志文件在handlog.log文件在D:\workspace.metadata.me_tcat\webapps\Own_Project\log目录下面,

后面 我写了个测试类代码如下:
[img]http://dl.iteye.com/upload/attachment/533628/a01a23f1-0579-3ec9-912c-156f0e7dc2c6.jpg[/img]

运行后发现:有日志文件在handlog.log文件在D:\workspace.metadata.me_tcat\webapps\Own_Project\log目录下面,
log4的资源文件配置改成如下:
[img]http://dl.iteye.com/upload/attachment/533630/0211c3c6-95d7-351c-a08b-fdfa88922707.jpg[/img]

最后,我改了登录方法代码如下:
[img]http://dl.iteye.com/upload/attachment/533632/e61161cd-145e-35f4-a070-70ef6cefce30.jpg[/img]

log4的配置文件和上面那个是一样的都是动态的那种,但是我怎么测试都输出不了日志文件???这是为什么呢???

  • 写回答

4条回答 默认 最新

  • laopeng301 2011-08-10 08:39
    关注

    "LOG_DIR"是个变量,会被System Property中的“WORKDIR”的值代替,
    但是这个有个前提是
    在log4j加载配置文件之前,先用System.setProperty设置好“WORKDIR”的值。而你在加载log4j配置文件前根本没设置“WORKDIR”的值。
    [code="java"]
    public class Log4jInit extends HttpServlet {
    static Logger logger = Logger.getLogger(Log4jInit.class);
    public Log4jInit() {

    }
    
    
    public void init(ServletConfig config) throws ServletException {
        String prefix = config.getServletContext().getRealPath("/");
        String file = config.getInitParameter("log4j");
        String filePath = prefix + file;
        Properties props = new Properties();
        try {
              FileInputStream istream = new FileInputStream(filePath);
              props.load(istream);
              istream.close();
              ));
              //设置路径
              String logFile = prefix + props.getProperty("log4j.appender.handLog.file");
              props.setProperty("log4j.appender.handLog.File",logFile);
              PropertyConfigurator.configure(props);//装入log4j配置信息
        } catch (IOException e) {
            toPrint("Could not read configuration file [" + filePath + "].");
            toPrint("Ignoring configuration file [" + filePath + "].");
            return;
        }
    
    
    }
    
    
    public static void toPrint(String content) {
        System.out.println(content);
    }
    

    }
    [/code]
    [code="xml"]

    log4j-init
    Log4jInit

    log4j
    WEB-INF/classes/log4j.properties


    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 webAPI接口返回值判断
  • ¥15 自动化测试 UI Automtion
  • ¥20 关于#深度学习#的问题:2708)输出:邻接矩阵A 或者 节点索引方式:通过随机游走或者其他方式,保持节点连接类似下图(语言-python)
  • ¥15 win2012 iscsi ipsec
  • ¥15 封装的 matplotlib animation 不显示图像
  • ¥15 python摄像头画面无法显示
  • ¥15 关于#3d#的问题:d标定算法(语言-python)
  • ¥15 cve,cnnvd漏洞扫描工具推荐
  • ¥15 图像超分real-esrgan网络自己训练模型遇到问题
  • ¥15 如何构建全国统一的物流管理平台?