【问题标题】:log4j fails to write into filelog4j 无法写入文件
【发布时间】:2017-02-23 11:16:54
【问题描述】:

我正在使用 Spring + Log4j。我可以在 Eclipse 控制台中看到我的日志,但是 Log4j 无法写入目标文件。

我的 web.xml:

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>

<context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

我的log4j.properties:目标文件是D:/home/site/wwwroot/logs/swinguserver.log

### set log levels ###
log4j.rootLogger = DEBUG, CONSOLE, LOGFILE

### Settings for Console ###
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold = INFO
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### Settings for File ###
log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.File = D:\/home\/site\/wwwroot\/logs\/swinguserver.log
log4j.appender.LOGFILE.Append = true
log4j.appender.LOGFILE.Threshold = DEBUG
log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
log4j.appender.LOGFILE.DatePattern = '_'yyyyMMdd'.log'

我用来测试Spring + Log4j的java代码,日志级别为INFO,日志内容为:JSONController.getShopInJSON(), name = xxxxxx

@Controller
@RequestMapping("/test")
public class JSONController {
    private static final Logger logger = Logger
            .getLogger(JSONController.class);

    @RequestMapping(value="{name}", method = RequestMethod.GET)
    public @ResponseBody Shop getShopInJSON(@PathVariable String name) {

        logger.info("JSONController.getShopInJSON(), name = " + name);

        Shop shop = new Shop();
        shop.setName(name);
        shop.setStaffName(new String[]{"mkyong1", "mkyong2"});

        return shop;

    }

}

当我在浏览器中访问测试 url 时,我可以在 Eclipse 控制台中看到所需的日志:

但是,当我检查 D:/home/site/wwwroot/logs/swinguserver.log 时,测试日志没有任何内容:

有什么建议吗?谢谢各位。

【问题讨论】:

    标签: java spring eclipse log4j


    【解决方案1】:

    原来我导入了错误的 Logger 包...我发布的代码没有任何问题。

    【讨论】:

      【解决方案2】:

      log4j.appender.FILE=org.apache.log4j.FileAppender

      log4j.appender.FILE.File=D:/home/site/wwwroot/logs/swinguserver.log

      在你的程序中尝试以上两行和以下两行

      log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender log4j.appender.LOGFILE.File = D:/home/site/wwwroot/logs/swinguserver.log

      【讨论】:

      • 嗨 vikky,请您进一步解释为什么使用 FileAppender 而不是 DailyRollingFileAppender?谢谢。
      猜你喜欢
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多