我正在使用org.apache.tools.ant.listener.Log4jListener来通过我的ant脚本管理日志记录。 ant脚本是高度可配置的,旨在使用不同的参数以不同的方式运行,因此,我需要能够登录到运行时指定的文件。我有一个log4j.properties,它指定了一个要构建的日志文件,尽管我尝试启动ant重新定义log4j.properties中定义的属性,但还是失败了。

构建将忽略它们,并继续写入build.log。除非自定义文件中的Logger类在Java中,否则我没有找到有关写入自定义文件的任何支持。

也许我在想错。 log4j.properties是否与ant脚本中的属性文件处理方式不同(因此可以从命令行覆盖)?有没有一种方法可以智能地完成此任务而无需编写自定义任务或其他内容?

最佳答案

您可以使用可以在命令行上动态定义的系统属性来设置log4j.properties文件。下面的属性是“$ {logfile.name}”。 log4j配置示例如下所示:

# logfile is set to be a RollingFileAppender
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${logfile.name}
log4j.appender.logfile.MaxFileSize=10MB
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{yyyyMMdd@HH\:mm\:ss,SSS}\:%c - %m%n

当调用“ant”时,传递属性的命令行选项是“-Dlogfile.name = {日志文件的运行时路径/文件名}”。将{日志文件的运行时路径/文件名}替换为您的文件名。运行ant时,此值设置为系统属性。然后,在运行时将该系统属性替换为log4j.properties。

http://ant.apache.org/manual/running.html

关于ant - 在运行时配置log4j,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4555088/

10-14 15:29