Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为web项目设置log4j输出文件:目标文件夹存在问题_Java_Logging_Log4j - Fatal编程技术网

Java 为web项目设置log4j输出文件:目标文件夹存在问题

Java 为web项目设置log4j输出文件:目标文件夹存在问题,java,logging,log4j,Java,Logging,Log4j,我正在尝试设置log4j,我希望输出文件放在我的项目中,特别是放在src/main/resources/logs文件夹中,因为我正处于开发阶段,我更喜欢让它在IDE中立即可见。 我的问题是,我不想在运行程序(系统或虚拟机)时使用绝对路径或变量作为参数传递 我有两个问题: 1) 如何通过属性设置log4j以将日志文件放置在所述文件夹中? 2) 您通常在哪里查看日志文件 我当前的log4j配置: log4j.debug=true log4j.rootLogger=debug, stdout, FI

我正在尝试设置log4j,我希望输出文件放在我的项目中,特别是放在src/main/resources/logs文件夹中,因为我正处于开发阶段,我更喜欢让它在IDE中立即可见。 我的问题是,我不想在运行程序(系统或虚拟机)时使用绝对路径或变量作为参数传递

我有两个问题: 1) 如何通过属性设置log4j以将日志文件放置在所述文件夹中? 2) 您通常在哪里查看日志文件

我当前的log4j配置:

log4j.debug=true

log4j.rootLogger=debug, stdout, FILE
log4j.appender.FILE = org.apache.log4j.FileAppender
log4j.appender.FILE.File = ${classpath}:\\logs\\log_1.txt
log4j.appender.FILE.ImmediateFlush = true
log4j.appender.FILE.Threshold = debug  
log4j.appender.FILE.Append = false
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=application.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=3
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
1) 在项目构建为war之后,src/main/resources将不存在。位于src/main/resource中的文件(由maven)打包到war文件的WEB-INF/classes目录中。src/main/resources用于需要位于应用程序类路径中的项目资源文件(例如log4j.properties、ini配置文件)。应用程序类路径通常无法通过操作系统的文件系统访问


2) 日志文件通常进入servlet容器的日志目录。例如,在tomcat中,它们使用$CATALINA_HOME/logs。下一个选择是操作系统日志目录。例如在linux中,/var/log/tomcat7

我理解这一点。我又添加了一条信息:我正处于开发阶段,因此我希望有一种简单的方法来访问日志。没有一种可移植的方法可以按照您的要求执行,因为servlet容器不知道您的项目的位置。因为您正在开发中,所以绝对或相对路径(可以从环境变量中检索)是可以接受的,并且可能是唯一的选项。