我正在开发一个项目,我们希望使用log4j处理我们的日志记录。我遇到了一些我无法轻易解决的问题,看看log4j文档或其他在线文档。
我得到了将日志代码放在整个代码库中的基本思路,然后让属性文件将记录的数据分配到appender的层次结构以及如何写出文件。没关系。这基本上允许我在一个硬编码文件夹中创建可缓存的日志文件,例如:
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
但我有两个基本问题:我希望日志位置是动态的,例如:
log4j.appender.R.File={$processDir}/example.log
此外,每次用户运行此应用程序时,都会使用输出文件创建一个文件夹。我想将日志文件放在那里,我不知道如何实现。
另一个问题(虽然我认为一旦第一个问题得到解决,这将会更容易......)是关于创建一个格式化的日志,不一定反映应用程序运行的过程...例如,标题,后跟所有输入文件的列表,所有输出文件的列表,遇到的任何警告。
我想我会创建一个实现ObjectRenderer的对象并编写一个doRender方法,它给了我想要的信息。
这听起来不对吗? 谢谢!
答案 0 :(得分:1)
您可以使用此语法的变量
log4j.appender.R.File=${processDir}/example.log
您必须使用
将变量定义为系统属性(例如-DprocessDir = ...)或手动(创建文件夹后)System.setProperty("processDir",logDir);