And*_*Dev 9 java logging log4j
当我将应用程序部署到运行JRE 1.7的其他计算机时崩溃,我遇到了问题.当我在我的PC上运行NetBeans内部(甚至直接来自JAR文件)时,一切都很好.但是在另一台计算机上,它在执行期间在特定事件(按钮点击)时失败.
所以,我学会了使用log4j库进行日志记录.这给了我一些关于我的应用程序中的问题的信息,并且在我的计算机上再次完成了日志记录.但是当我将JAR文件部署到只运行JRE(Java 7 Update 17)的其他计算机时,我找不到任何日志文件的痕迹.
这是我的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=C:\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
# Direct log messages to stdout 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
Run Code Online (Sandbox Code Playgroud)
在我的计算机上,我可以在项目文件夹中看到logging.log文件.在某种程度上,一切都很完美.但是,在用户PC上,根本没有此文件的迹象.不在C:\(我认为它会在那里),而不是在C:\ Program Files(x86)\或其他任何地方.我已经完成了对硬盘的全面搜索,但没有任何回复.
该文件应存放在何处?我的属性设置正确吗?非常困惑...
谢谢!
如果有人偶然发现这篇文章,我想记录我是如何解决它的.
首先,正如DwB正确指出的那样,问题确实是用户的帐户没有足够的权限来创建logging.log文件.在我的代码中,我有一个正在执行的catch块,并包含在文件写入错误时退出系统的代码.因为正好是我正在尝试编写的日志详细信息,所以我无法获得任何输出以便将此作为我问题的根源.
一旦我意识到这一点,我只需要改变我写日志文件的位置.而不是将其写入根目录(C:\)或jar文件所在的文件夹(C:\ Program Files \),这两个地方都是我不能保证用户拥有完全权限的地方,我决定在其AppData路径中创建文件夹.
我程序的第一行现在调用了这个函数(使用通用名MyProgram):
private static void makeAppDataFolder() {
File dir = new File(System.getenv("APPDATA") + "\\MyProgram");
if (!dir.exists()) {dir.mkdir();}
}
Run Code Online (Sandbox Code Playgroud)
这将在\ AppData\Roaming的用户帐户中创建一个名为MyProgram的文件夹.由于此路径是用户帐户路径的一部分,因此我相信用户始终可以写入该路径,从而解决权限问题.如果有人不知道,请告诉我.
然后,在我的log4j.properties文件中,我更改了该行
log4j.appender.file.File=logging.log
Run Code Online (Sandbox Code Playgroud)
至
log4j.appender.file.File=${user.home}/Application Data/MyProgram/logging.log
Run Code Online (Sandbox Code Playgroud)
这会将文件定向到我刚刚创建的文件夹.
一旦我这样做,并添加了一些很好的日志消息,我就能找到其他问题,现在一切正常.
我希望这可以帮助别人.如果有人有任何建议,请发布.
| 归档时间: |
|
| 查看次数: |
26092 次 |
| 最近记录: |