繁体   English   中英

设置登录 java 的属性

[英]Setting properties for logging in java

在阅读本文之前,您应该知道我是 python 开发人员,在未知的 Java 领域。

我正在尝试为 Java 设置日志记录。 当我设置 logging.properties 时,我能够让它工作。 像这样:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.config.file= /path/to/logging/file/logging.properties -jar start.jar

logging.properties文件已检入修订控制,并且在我当前的设置中将用于所有环境,因此我不想在logging.properties文件中对 logging.FileHandler.pattern 进行硬编码。 因此,我尝试通过这样做将其移至命令行:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.config.file= /path/to/logging/file/logging.properties -Djava.util.logging.FileHandler.pattern=/var/log/project_name/solr/solr.log -jar start.jar

但似乎 FileHandler.pattern 无法识别,因此该文件从未写入。 所以,然后我想,好吧,让我们放弃logging.properties文件并尝试将所有内容都扔到命令行中。 所以,然后我尝试了这个:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.Handler=java.util.logging.FileHandler -D.level=WARNING -Djava.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter -Djava.util.logging.FileHandler.pattern=/var/log/project_name/solr/solr.log -jar start.jar

但这也没有用。 所以,我正在寻求帮助。

三个问题:

  1. 为什么我提供的第二个示例不起作用?
  2. 为什么我提供的第三个示例不起作用?
  3. 由于 logging.properties 文件已签入版本控制并且是共享文件,因此正确的方法是什么? 最佳做法是什么?

回复时请用小字给我们Java新手。 :-)

-Dxyz.blahbla.bla=foobar是系统属性,并非所有内容都可以用作系统属性,因为会有一些代码会要求该属性,即使你可以放任何你想要的东西,也没有人会阅读。

例如,试试这个代码:

class HelloSystemProperty {
     public static void main( String ... args ) {
         System.out.println( System.getProperty("getIt"));
      }
 }

然后像这样运行它:

java -DgetIt=Yeah HelloSystemProperty

因此,正如您现在可能猜到的那样,您不能只是 go 并将任何进入该文件的内容作为系统属性放入,除非您自己阅读并相应地处理它。

因此,如果您确实需要手动修改日志记录级别作为系统属性,您可能需要添加代码来读取该属性并设置值,但这可能太多了,我不确定您是否想要 go 那里。

所以使用文件就足够了

我希望这有帮助。

“硬编码 FileHandler 模式”可能不是一件坏事,因为该模式可以包含在运行时替换的标记。 我知道 %t 被虚拟机认为是系统临时目录的任何内容替换(如 /var/tmp 或 C:\\TEMP),%h 是用户的主目录(或者更确切地说是“user.home”系统属性),还有更多,但我不知道所有这些。

如果您使用其中的一些,则该模式可能足够通用,您不必担心尝试对它进行超级概括以实现可移植性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM