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条)

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名