【问题标题】:SparkJava redirecting logging with log4j to a fileSparkJava 使用 log4j 将日志记录重定向到文件
【发布时间】:2016-12-29 12:27:40
【问题描述】:

我创建了一个简单的 Spark 项目,并将 log4j 作为依赖项包含在内,并添加了 log4j.properties 文件以将我的日志写入文件系统上的文件。 由于某种原因,这不起作用,当我运行我的应用程序时,我只能在控制台中看到日志。 正在创建我为日志记录定义的文件,其中甚至还有一些通用日志行,但没有我从应用程序记录的日志行。

这是我的 build.gradle 文件中的依赖部分:

dependencies {
    compile 'com.sparkjava:spark-core:2.3'
    compile group: 'org.springframework', name: 'spring-core', version: '4.3.5.RELEASE'
    compile group: 'org.springframework', name: 'spring-beans', version: '4.3.5.RELEASE'
    compile group: 'org.springframework', name: 'spring-context', version: '4.3.5.RELEASE'
    compile group: 'org.springframework', name: 'spring-expression', version: '4.3.5.RELEASE'
    compile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.4.1'
    compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
    compile group: 'com.google.guava', name: 'guava', version: '11.0.2'
    compile group: 'log4j', name: 'log4j', version: '1.2.17'
}

这是我的 log4j.properties 文件:

# Root logger option
log4j.rootLogger=INFO, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

我尝试修改 log4j.properties 以使其工作,但没有成功。 我只创建了我的日志文件,其中有几行来自应用程序的启动。 应用程序日志不存在,它们仅显示在 Eclipse 控制台中。

这个设置我做错了什么?

【问题讨论】:

    标签: logging log4j slf4j spark-java


    【解决方案1】:

    根据documentation,只需要 slf4j 依赖项。您是否尝试过添加 slf4j-simple 依赖而不是 log4j?

    【讨论】:

    • 看来sparkjava已经提供了slf4j-simple依赖,所以不需要额外的依赖。我刚刚从我的项目中删除了 log4j 并正确配置了 slf4j-simple。
    【解决方案2】:

    我只是想简单地记录到一个文件中,并在我的项目中添加了 log4j 依赖项。这是不必要的,因为 sparkjava 已经提供了可用于此目的的 slf4j-simple。

    我从 build.gradle 中删除了 log4j 依赖项,将 simplelogger.properties 添加到我的类路径中,并将其配置为将日志写入磁盘上的文件。

    【讨论】:

    • 你能分享你的 simplelogger.properties 文件吗?
    猜你喜欢
    • 2011-06-12
    • 2012-01-29
    • 2010-09-22
    • 2017-05-31
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多