Как удалить / скрыть сообщение об ошибке запуска Atomikos? - PullRequest
2 голосов
/ 10 июня 2010

Когда Atomikos настроен через Spring, файл 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 раз?

Есть ли способ перенаправить stderr из определенного компонента или jar?

Ответы [ 2 ]

4 голосов
/ 16 июля 2010

Вам необходимо установить системное свойство 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 должны "зависеть" от этого бина, чтобы порядок создания экземпляров был правильным.

1 голос
/ 11 июня 2010

Журналы Atomikos с SLF4J .Если только эта зависимость регистрируется в SLF4J, вы можете использовать связыватель NOP в SLF4J, и ничего не будет зарегистрировано.Вероятно, не то, что вам нужно, но очень просто.

Вы можете настроить бэкэнд-регистратор вашего SLF4J так, чтобы он игнорировал сообщения журнала в определенных пакетах.Пример с logback в качестве бэкэнд-регистратора SLF4J:

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

Я написал учебник о SLF4J и различных бэкэнд-регистраторах здесь .

...