当前位置: 首页 > 知识库问答 >
问题:

log4j在模式中设置类和方法摘要长度

余铭晨
2023-03-14

我想使calss.method.line在所有日志行上具有相同的长度。(因为实际的消息是在同一个地方开始的)

有可能吗?

其他wors说,有没有可能用一个转换说明符格式化多个转换字符?看着

否,每个修饰符应用于一个转换。但是Log4j可以添加一个新的转换器,这意味着您想要的。您可以在邮件列表或问题跟踪器上提出这样的新转换器。

我创建了问题:https://issues.apache.org/jira/browse/log4j2-2339

共有1个答案

尹赞
2023-03-14
<property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5.5p | %-15.15t | %-70.70CML | %-10.70X | %msg%n</property>

import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.pattern.ConverterKeys;
import org.apache.logging.log4j.core.pattern.NamePatternConverter;
import org.apache.logging.log4j.core.pattern.PatternConverter;

@Plugin(name = "ClassMethodLinePatternConverter", category = PatternConverter.CATEGORY)
@ConverterKeys({"CML", "classmethodline"})
public class ClassMethodLinePatternConverter extends NamePatternConverter {

    private static final String NA = "?";

    private ClassMethodLinePatternConverter(
        final String[] options) {
        super("Class Name", "class name", options);
    }

    public static ClassMethodLinePatternConverter newInstance(final String[] options) {
        return new ClassMethodLinePatternConverter(options);
    }

    /**
     * Format a logging event.
     *
     * @param event      event to format.
     * @param toAppendTo string buffer to which class name, method name and line will be appended.
     */
    @Override
    public void format(final LogEvent event, final StringBuilder toAppendTo) {
        final StackTraceElement element = event.getSource();
        if (element == null) {
            toAppendTo.append(NA);
        } else {
          toAppendTo.append(element.getClassName()).append(".").append(element.getMethodName()).append(":").append(element.getLineNumber());
        }
    }
 类似资料:
  • 这看起来很基本,但我没有找到一种方法得到它。当我对一个类做F1时,我在IDE中获得的类文档没有方法摘要。没人觉得有用吗?基本上,我想了解构造函数和方法摘要http://docs.oracle.com/javase/6/docs/api/javax/xml/parsers/saxparser.html。

  • 如何像方法在Keras中的作用:

  • 问题内容: 有什么办法,我可以像在Keras中的方法那样在PyTorch中打印模型的摘要,如下所示? 问题答案: 虽然您不会像Keras的模型那样获得有关模型的详细信息。总之,仅打印模型将使您对所涉及的不同层及其规格有所了解。 例如: 在这种情况下,输出将如下所示: 正如Kashy所提到的,现在您可以使用该方法来获取不同图层的权重。但是,使用此层列表可能会提供更多指导,即创建一个辅助函数来获得类似

  • 我正在实现一个工厂,一个负责跨应用程序管理令牌的类。我将在这个简化的示例之后解释我面临的问题: 最后是实现: 现在,在我们的中,我们要创建一个jWTTokenManager实例: TokenManager类型未定义方法aMethodNotDefinedInInterface()

  • 我需要允许网站的老用户使用相同的凭证访问新网站。数据库服务器版本是Microsoft SQL Server 2005,我没有权限更改数据库。数据库的密码列设置为varchar(50),摘要为48个字符。我所知道的关于密码的唯一信息是,它们已经用sha-256算法进行了哈希处理,但据我所知,阿沙-256摘要是64个字符,而不是48个。有可能用sha256生成同样的48长度摘要吗?

  • 我的问题是,我无法从flyway javaspring执行迁移,即使检测到迁移文件,并且相同的迁移文件可以从cmd运行。 我已经尝试设置我在互联网上找到的所有可能有用的参数来配置架构,但它仍然停留在“PUBLIC”。 首先,问题如下:(来自JavaSpring的日志) 该表称为公共表,我也无法从 mysql 工作台上看到它。 但如果我使用flyway migrate从命令行执行此操作,它会改变名为