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

时间:2010-06-10 17:20:22

标签: spring stderr atomikos

当通过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?

2 个答案:

答案 0 :(得分:4)

您需要将系统属性com.atomikos.icatch.hide_init_file_path设置为任何值。在java命令行上执行此操作。在maven中,您可以通过将命令行arg传递给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 bean“依赖”这个bean,这样实例化的顺序是正确的。

答案 1 :(得分:1)

Atomikos记录SLF4J。如果只有这个依赖项记录SLF4J,你可以使用SLF4J的NOP绑定器,不会记录任何内容。可能不是你想要的,但非常简单。

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

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

我写了一篇关于SLF4J和不同后端记录器here的教程。