如何设置Atomikos不写入控制台日志?

时间:2010-04-19 13:46:53

标签: java atomikos

Atomikos在使用时非常冗长。事务管理器写入控制台似乎有很多INFO消息(对我来说无关紧要)。 transaction.properties中用于控制消息传递级别 com.atomikos.icatch.console_log_level 的设置似乎没有任何影响,因为即使设置为WARN(或ERROR)INFO也是如此消息仍然记录。此外,com.atomikos和atomikos的log4j设置似乎被忽略。 有没有人设法使用Atomikos关闭控制台上的INFO日志?怎么样? 感谢

彼得

4 个答案:

答案 0 :(得分:1)

我正在使用Atomikos 3.8进行测试,并尝试了此处列出的所有解决方案(2012年7月4日),但均无效。

所以我创建了以下类MockAtomikosLogger并在我的测试设置中调用了configure方法。

测试设置代码片段:

    MockAtomikosLogger.configure();

模拟记录器如下:

package com.atomikos.logging;

import com.atomikos.logging.Logger;

public class MockAtomikosLogger implements Logger {

    org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(getClass());

    public static void configure() {
        com.atomikos.logging.LoggerFactory.setLoggerFactoryDelegate(
                new LoggerFactoryDelegate() {

                    @Override
                    public Logger createLogger(Class<?> clazz) {
                        return new MockAtomikosLogger();
                    }
                });
    }//end configure

    @Override
    public void logWarning(String message) {
        logger.warn(message);
    }

    @Override
    public void logInfo(String message) {
    }

    @Override
    public void logDebug(String message) {
    }

    @Override
    public void logWarning(String message, Throwable error) {
        logger.warn(message, error);
    }

    @Override
    public void logInfo(String message, Throwable error) {
    }

    @Override
    public void logDebug(String message, Throwable error) {
    }

    @Override
    public boolean isDebugEnabled() {
        return false;
    }

    @Override
    public boolean isInfoEnabled() {
        return false;
    }   
}

答案 1 :(得分:0)

我找到了一种方法。实际上非常简单,因为Atomikos使用集中式类来执行名为 com.atomikos.icatch.system.Configuration 的日志记录。记录实际上是通过 com.atomikos.diagnostics.Console 的实现来执行的,所以我所要做的就是取消注册所有默认控制台并注册我自己的基于公共记录的实现

答案 2 :(得分:0)

您的修复可能会起作用,但更简单的方法是将SLF4J / Log4J配置为不记录com.atomikos的INFO级别注释。*

HTH

答案 3 :(得分:0)

我有类似的问题,并设法解决它们,如这些帖子中所描述的Atomikos论坛(1),这里是解决方案的摘要:

在我的课程中,我有:
SLF4J-API-1.6.4.jar
SLF4J-log4j12-1.6.4.jar
log4j的-1.2.16.jar
我在类路径中没有其他slf4j * jar文件(这很重要)。

在我的log4j.xml文件中,我添加了:

<logger name="com.atomikos">
    <level value="error" />
</logger>

请注意我使用的是“com.atomikos”而不是“atomikos”(因为后者对我不起作用)。 而现在其他重要的技巧使整个事情发挥作用: 确保该属性: com.atomikos.icatch.output_dir

在jta.properties(或transactions.properties)

中删除/注释掉

我希望它有所帮助。

(1):http://fogbugz.atomikos.com/default.asp?community.6.2809.2