java - Liferay,如何获取根记录器?

标签 java logging liferay

我正在尝试开发 portlet,当在给定时间段内发生一组指定的异常时,该 portlet 会向管理员发送电子邮件。我正在尝试在 liferay 中获取根记录器,以便我可以向其中添加我的附加程序并处理通过日志记录机制的所有消息。 我查看了源代码,似乎liferay使用了java.util.logging.LogManager。我制作了一个在服务器启动时触发的钩子(Hook)。这是我的 run() 方法:

public void run(String[] ids) throws ActionException {
    System.out.println("initializing");     

    LogListener listener = new LogListener();
    listener.setLevel(Level.ALL);
    listener.setFilter(null);
    Logger.getGlobal().addHandler(listener);

    _log.debug("complete");
}

和LogListener类

package pl.com.mds.portlet.mailing.hook;

import java.util.logging.Handler;
import java.util.logging.LogRecord;

public class LogListener extends Handler {

    @Override
    public void publish(LogRecord record) {
        System.out.println("publishing******");

    }

    @Override
    public void flush() {
        // TODO Auto-generated method stub
        System.out.println("have to flush! *****");
    }

    @Override
    public void close() throws SecurityException {
        // TODO Auto-generated method stub
        System.out.println("close meee!");
    }

}

但是当抛出一些异常时,我无法在控制台publishing******中看到仅异常堆栈跟踪。如何获取应用程序中的所有日志和异常? 谢谢:)

最佳答案

根记录器可以通过标准过程Logger.getLogger(“记录器名称在此处”)获得。根记录器的名称为空字符串。因此,您应该按如下方式编辑代码: Logger.getLogger("").addHandler(监听器);

关于java - Liferay,如何获取根记录器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37876246/

相关文章:

java - 如何在DataProvider中获取testng类参数

java - 将网页转换为 HTML

python - 如何在独立应用程序中手动将日志记录处理程序添加到 gunicorn 记录器?

liferay - 在 Liferay 中强制注销后显示自定义错误页面

java - Liferay portlet(带有 JSF)- 在重定向期间将参数从一个 bean 传递到另一个 bean

mysql - 如何更改用于存储 liferay 内容的数据库?

java - Java中<code>到底是什么

java - Apache Wink JSONObject/JSONException 的替代方案

java - Spring 启动日志记录

logging - 如何将自定义(非 const)字符串信息添加到日志格式?