2012-08-29 51 views
3

这可能是一个非常愚蠢的问题,但我似乎无法找到答案。我有一个Tomcat的自定义领域,在上下文级别使用。我想登录失败和成功登录。从自定义Tomcat领域记录

是否有某种方式为我指定一个文件,或者获得现有文件的参考,这将让我写,从该领域的身份验证功能,里面明确的日志行呢?

我试图建立一个log4j的文件和文件JUL并调用getLogger并试图写它,没有运气。我也尝试过getLogger(“catalina”),希望能够访问内部日志记录过程,但也没有运气。从那里得到任何帮助?

回答

0

请问您的自定义域扩展org.apache.catalina.realm.RealmBase

有一个受保护的属性org.apache.catalina.realm.RealmBase.containerLog(它是org.apache.juli.logging.Log的一个实例),您将有权访问该属性。这似乎是登录许多org.apache.catalina.realm.*实现的方法。

0

使用containerLog证明非常简单。

的好处是,您可以利用服务器日志记录配置,在Tomcat中7,在使用巨力特别好(如在公共记录的改善)。

我不喜欢的唯一的事情就是API是公共的日志记录,不那么友好为SLF4J的实例。 但是你也可以在log4j上配置slf4j,在这种情况下,你必须在tomcat/lib中添加JAR文件,这样父类装载器在实例化你的领域时就可以看到它们。

一件事,你需要注意:不要登录境界构造的东西!我必须做一些自定义初始化(加载一个自定义文件),我添加了一些基本的日志记录,并以一个讨厌的NullPointer结束 - containerLog不是在构造函数中初始化的,而是在initInternal()方法中初始化的。重写这个,确保你调用了初始化记录器的super.initiInternal(),然后你去了。