【问题标题】:is there any alternative solution for renderers in log4j2?log4j2 中的渲染器有什么替代解决方案吗?
【发布时间】:2021-09-10 12:21:36
【问题描述】:

我之前使用的是 log4j 1.x,主要使用 log4j.xml 中的渲染器进行自定义打印。

在我的 java 代码中覆盖 ObjectRendererdoRender(),如下所示 MessageRenderer.java 覆盖 ObjectRenderer

    public String doRender(Object o) {

    MessageLoggingContext loggingContext = (MessageLoggingContext) o;
    AbstractMessage message = loggingContext.getMessage();
    StringBuilder sb = new StringBuilder(512);
    sb.append(message.isIncoming() ? "T:" : "F:").append("[").append(loggingContext.getConnectionID()).append(",")
            .append(
                    loggingContext.getSessionKey()).append(",").append(loggingContext.getAccountName())
            .append("]:"); 
     return sb.toString();
    }


    Inside log4j.xml :

    <renderer renderedClass="com.common.service.log4j.MessageLoggingContext" 
    renderingClass="com.common.service.log4j.MessageRenderer" />

【问题讨论】:

    标签: java xml log4j log4j2


    【解决方案1】:

    从上面的例子看来,你想渲染一些文字。

    一个 API:TextRenderer 应该对您的用例有用。

    void render(String input,
            StringBuilder output,
            String styleName)
    

    将输入文本呈现到输出。 参数: 输入 - 输入 输出 - 输出 styleName - 用于在输出上呈现输入的样式名称。

    HtmlTextRenderer, JAnsiTextRenderer, PlainTextRenderer 
    

    是不同类型的渲染器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多