Java 每个jar的logback配置文件

Java 每个jar的logback配置文件,java,logging,jar,classpath,logback,Java,Logging,Jar,Classpath,Logback,我想用自己的日志配置交付jar文件。 配置logback的常用方法是使用默认文件logback.xml,logback库从类路径的根目录读取该文件(是否适用于应用程序服务器) 您可以从主logback配置文件中创建其他文件(没有尝试),但我不知道哪些JAR将位于类路径中,哪些JAR需要日志配置 此外,JAR还可以用于命令行应用程序或应用程序服务器(无论是否为共享库) 我想也许我可以获取jar的文件路径,检查那里是否有配置文件,然后尝试以编程方式读取配置并使用JoranConfigurator加载

我想用自己的日志配置交付jar文件。 配置logback的常用方法是使用默认文件logback.xml,logback库从类路径的根目录读取该文件(是否适用于应用程序服务器)

您可以从主logback配置文件中创建其他文件(没有尝试),但我不知道哪些JAR将位于类路径中,哪些JAR需要日志配置

此外,JAR还可以用于命令行应用程序或应用程序服务器(无论是否为共享库)

我想也许我可以获取jar的文件路径,检查那里是否有配置文件,然后尝试以编程方式读取配置并使用JoranConfigurator加载它

// This is the way I find to get the path to the jar
String path = ClassThatWantsALogger.class.getProtectionDomain().getCodeSource()
            .getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");// the path to the jar
但是这种方法可能会失败,因为这取决于安全限制,可能会在Linux或应用服务器中失败。对于一个可能有更好解决方案的问题来说,这是一种艰难的方法


您是否设想了一种管理JAR的方法,它可以有自己的logback配置文件,适用于任何环境?

我将回答您的问题:日志配置是客户端应用程序的关注点(分离关注点)。这是他的决定,在哪里,如何和什么将被记录。我们的库不能对其施加任何影响。

在我工作的组织中,我必须向其他团队提供具有通用功能和其他应用程序连接器的库。我关心的是决定在哪里以及记录这些库的内容。如果我要求这些团队必须在他们的logback配置文件中添加特定的配置,他们可能会犯错误,忘记或误解我的请求。另外,如果我想更改这些库的日志配置,我需要请求这些团队更改logback配置文件。另外,他们通常无法在生产环境中修改此内容。提供库很好,这也是我所做的。如果您在不知道目标环境的情况下编写通用库,那么这怎么可能是您的问题呢?很抱歉告诉你,你们公司的理念是不成熟的。这不是日志配置的目的。您所能做的就是在
com/company/package/logback.xml
中提供一个conf文件,并使用
将该文件包含在目标环境中。