0
我有一个库(非可执行)的jar文件,我需要将log4j.properties
放在jar外。log4j.properties不可执行jar文件外
在可执行jar文件中,我可以通过-Dlog4j.configuration
传递路径。但在这种情况下我怎么能做到这一点?
我有一个库(非可执行)的jar文件,我需要将log4j.properties
放在jar外。log4j.properties不可执行jar文件外
在可执行jar文件中,我可以通过-Dlog4j.configuration
传递路径。但在这种情况下我怎么能做到这一点?
从https://logging.apache.org/log4j/1.2/manual.html:
确切的默认初始化算法定义如下:
- 的log4j.defaultInitOverride系统属性设置为任何其他值,那么“假”将导致log4j的跳过默认初始化程序(这个程序)。
- 将资源字符串变量设置为log4j.configuration系统属性的值。指定默认初始化文件的首选方法是通过log4j.configuration系统属性。如果未定义系统属性log4j.configuration,则将字符串变量资源设置为其默认值“log4j.properties”。
- 尝试将资源变量转换为URL。
- 如果资源变量无法转换为URL(例如,由于MalformedURLException),则通过调用org.apache.log4j.helpers.Loader.getResource(resource,Logger.class)从类路径中搜索资源返回一个URL。请注意,字符串“log4j.properties”构成格式不正确的URL。 请参阅Loader.getResource(java.lang.String)以获取搜索的位置列表。
- 如果找不到URL,请中止默认初始化。否则,从URL配置log4j。 PropertyConfigurator将用于解析URL以配置log4j,除非URL以“.xml”扩展名结尾,在这种情况下将使用DOMConfigurator。你可以选择指定一个自定义配置器。 log4j.configuratorClass系统属性的值将作为自定义配置程序的完全限定类名称。您指定的自定义配置器必须实现配置器界面。
您可以使用PropertyConfigurator.configure
初始化log4j的,并通过系统属性,另一个配置文件,环境变量等
但是指定你log4j.properties
的路径,你可能不希望有为您的JAR单独记录机制/配置,而不是让它使用调用它的应用程序中的一个或多个。
尝试http://stackoverflow.com/questions/8775303/read-properties-file-outside-jar-file –
不,这对我不起作用。我的是不可执行的jar文件和log4j.properties – Arjun
你如何使用这个jar文件? –