我有一个简单的log4j HelloWorld程序..
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class HelloWorldLog4J {
private static final Logger logger = LogManager.getLogger("HelloWorld");
public static void main(String[] args) {
System.out.println("pre_loggerDOTinfo");
logger.info("Hello, World!mmm");
System.out.println("post_loggerDOTinfo");
}
}
这是我的属性文件,我将其放在同一目录中:
# Root logger option
log4j.rootLogger=INFO, file
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\Users\adel\Desktop\Misc_Stuff\Java_Code\logging.log
log4j.appender.file.MaxFileSize=1MB
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
但由于某种原因,我找不到在同一目录中创建的日志文件。我在想,在运行程序之后,它会创建文件logging.log
答案 0 :(得分:2)
反斜杠是属性文件中的转义字符,因此如果要指定文件名
C:\Users\adel\Desktop\Misc_Stuff\Java_Code\logging.log
然后你需要加倍反斜杠:
C:\\Users\\adel\\Desktop\\Misc_Stuff\\Java_Code\\logging.log
或者,使用向前而不是向后斜杠(C:/Users/...
),因为窗口可以应对。属性解析器通过静默忽略反斜杠来响应无法识别的转义序列,因此它会将原始值视为
C:UsersadelDesktopMisc_StuffJava_Codelogging.log
当您启动Java进程时,您可能会发现它在C:驱动器上的当前目录中创建了一个具有该非常长名称的文件。