如何删除/隐藏 Atomikos 启动错误消息?

发布于 2024-09-05 07:41:57 字数 472 浏览 3 评论 0原文

当通过 Spring 配置 Atomikos 时,不需要 jta.properties 或 transactions.properties 文件。尽管如此,Atomikos 启动时会在 stderr 中打印以下消息:

No properties path set - looking for transactions.properties in classpath...
transactions.properties not found - looking for jta.properties in classpath...
Failed to open transactions properties file - using default values

这使得 Spring 配置看起来没有采取——尽管显然一切都很好。有谁知道如何摆脱这个问题,这样我就不会被问到 1000 次了?

有没有办法从特定组件或 jar 重定向 stderr?

When Atomikos is configured via Spring, a jta.properties or transactions.properties file is not needed. Nonetheless, Atomikos starts up with the follow messages printed to stderr:

No properties path set - looking for transactions.properties in classpath...
transactions.properties not found - looking for jta.properties in classpath...
Failed to open transactions properties file - using default values

It makes it look like the Spring configuration didn't take -- although apparently everything is fine. Does anyone know how to get rid of this so I don't end up getting asked about it 1.000 times?

Is there a way to redirect stderr from a particular component or jar?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

以往的大感动 2024-09-12 07:41:57

您需要将系统属性 com.atomikos.icatch.hide_init_file_path 设置为任意值。在 java 命令行上执行此操作。在 Maven 中,您可以通过将命令行参数传递给 Surefire 来完成此操作,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <argLine>-Dcom.atomikos.icatch.hide_init_file_path=true</argLine>
    </configuration>
</plugin>

更新:从 Spring 配置文件中,您可以像这样设置属性:

<bean id="atomikosSystemProps" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject">
        <!-- System.getProperties() -->
        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetClass" value="java.lang.System" />
            <property name="targetMethod" value="getProperties" />
        </bean>
    </property>
    <property name="targetMethod" value="putAll" />
    <property name="arguments">
        <!-- The new Properties -->
        <util:properties>
            <prop key="com.atomikos.icatch.hide_init_file_path">true</prop>
        </util:properties>
    </property>
</bean>

只需记住让您的 Atomikos beans“依赖于”此 bean,以便顺序实例化是正确的。

You need to set the system property com.atomikos.icatch.hide_init_file_path to any value. Do this on the java command line. In maven you do this by passing a command line arg to surefire as follows:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <argLine>-Dcom.atomikos.icatch.hide_init_file_path=true</argLine>
    </configuration>
</plugin>

Update: From within a Spring configuration file, you can set the property like this:

<bean id="atomikosSystemProps" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject">
        <!-- System.getProperties() -->
        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetClass" value="java.lang.System" />
            <property name="targetMethod" value="getProperties" />
        </bean>
    </property>
    <property name="targetMethod" value="putAll" />
    <property name="arguments">
        <!-- The new Properties -->
        <util:properties>
            <prop key="com.atomikos.icatch.hide_init_file_path">true</prop>
        </util:properties>
    </property>
</bean>

Just remember to make your Atomikos beans "depend-on" this bean so the order of instantiation is correct.

十六岁半 2024-09-12 07:41:57

Atomikos 使用 SLF4J 进行日志记录。如果仅使用 SLF4J 记录此依赖项,则可以使用 SLF4J 的 NOP 绑定器,并且不会记录任何内容。可能不是您想要的,但非常简单。

您可以配置 SLF4J 的后端记录器以忽略特定包中的日志消息。
以 logback 作为 SLF4J 后端记录器的示例:

<logger name="com.atomikos.something" level="OFF"/>

我编写了有关 SLF4J 和不同后端记录器的教程 此处

Atomikos logs with SLF4J. If only this dependency logs with SLF4J, you can use SLF4J's NOP binder and nothing will be logged. Probably not what you want, but very simple.

You can configure your SLF4J's backend logger to ignore log messages in specific packages.
An example with logback as SLF4J' backend logger:

<logger name="com.atomikos.something" level="OFF"/>

I have written a tutorial about SLF4J and different backend loggers here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文