我正在尝试配置log4j以将消息记录到文件中。现在,文件确实使用我提供的名称创建,但日志不会写入文件。我的代码:
public class Main extends Application
{
private static Logger logger = Logger.getLogger( Main.class.getName() );
@Override
public void start(Stage primaryStage) throws Exception
{
logger.warning("test");
logger.severe("oh noes");
}
public static void main(String[] args) {
launch(args);
}
}
我的log4j.properties
文件的内容:
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log.log
log4j.appender.file.MaxFileSize=1024MB
log4j.appender.file.MaxBackupIndex=1
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.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
当我运行它时,我在控制台中获得此输出:
Jun 23, 2014 3:19:16 AM com.foo.Main start
WARNING: test
Jun 23, 2014 3:19:16 AM com.foo.Main start
SEVERE: oh noes
文件log.log
确实在我的主目录中创建。但它是空的。
任何想法我做错了什么?我正在使用log4j 1.2.17版。
答案 0 :(得分:7)
输出似乎是Java标准日志记录框架(JUL)发出的默认格式。
因此,有两种可能性(想到这一点):
java.util.logging.Logger
,而不是org.apache.log4j.Logger
。答案 1 :(得分:0)
我有同样的问题,我解决了。 当我在属性文件中将级别从INFO更改为DEBUG时 - 行:
log4j.rootLogger=DEBUG, file, stdout
而不是我用脚本写的:
logger.debug("Hello world");
所有内容都保存在文件中。
答案 2 :(得分:0)
我和你有同样的问题。文件已创建,但仅在控制台中没有任何登录记录。在我的案例中,这是因为Maven项目中的依赖关系不正确。
我的log4j.properties
文件是:
# Root logger option
log4j.rootLogger=DEBUG, file
# Direct log messages to a log file
# configuration to print into file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=10
# Define the layout for file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Set the name of the file
log4j.appender.file.File=C:\\log\\logging.log
# Set the append to false, overwrite
log4j.appender.file.Append=false
我在POM中使用了
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
是的,它在需要的地方为我创建了文件,但是日志在控制台中。然后我将其更改为另一个依赖项,例如:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
最后我将其保存在文件中,而不是控制台中。即使没有PropertyConfigurator.configure()
之类的任何明确命令。