log4j2 自定义附加程序在 proguard 后无法工作

问题描述 投票:0回答:1

应用 proguard 后出现以下错误。
用于 proguard 的 -injar 没有收到错误。
通过跳过所有类(包括混淆中混淆的依赖项)来检查错误。 使用 maven- assembly-plugin 创建具有依赖项的 injar 。

2023-09-28 23:42:58,309 JavaFX Application Thread ERROR Error processing element TextAreaAppender ([Appenders: null]): CLASS_NOT_FOUND
2023-09-28 23:42:58,488 JavaFX Application Thread ERROR Unable to locate appender "JavaFXLogger" for logger config "root"

自定义Appender类

package my.package;

@Plugin(
        name = "TextAreaAppender",
        category = "Core",
        elementType = "appender",
        printObject = true)
public final class TextAreaAppender extends AbstractAppender {
    private static final Logger logger = LogManager.getLogger();

    private static CodeArea textArea;
    private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
    private final Lock readLock = rwLock.readLock();


    public TextAreaAppender(String name, Filter filter,
                            Layout<? extends Serializable> layout,
                            final boolean ignoreExceptions) {
        super(name, filter, layout, ignoreExceptions);
    }

    @PluginFactory
    public static TextAreaAppender createAppender(
            @PluginAttribute("name") String name,
            @PluginElement("Layout") Layout<? extends Serializable> layout,
            @PluginElement("Filter") final Filter filter) {
        if (name == null) {
            LOGGER.error("No name provided for TextAreaAppender");
            return null;
        }
        if (layout == null) {
            layout = PatternLayout.createDefaultLayout();
        }
        return new TextAreaAppender(name, filter, layout, true);
    }

    @Override
    public void append(LogEvent event) {
        readLock.lock();
        .....
    }
}    

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="my.package" >

    <!-- Logging Properties -->
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5p | [%thread] (%F:%L) - %m%n</Property>
        <Property name="LOG_LEVEL">INFO</Property>
        <Property name="APP_LOG_ROOT">logs</Property>
    </Properties>

    <Appenders>
        <TextAreaAppender name="JavaFXLogger">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </TextAreaAppender>

  
    </Appenders>

    <Loggers>
        <Logger name="my" additivity="false" level="${LOG_LEVEL}">
            <AppenderRef ref="JavaFXLogger"/>
        </Logger>

        <Root level="${LOG_LEVEL}">
            <AppenderRef ref="JavaFXLogger"/>
        </Root>
    </Loggers>

</Configuration>
java log4j2 proguard
1个回答
0
投票

确保配置中的包被正确引用。 仅当包引用错误时,我才在您的代码中收到此异常。

© www.soinside.com 2019 - 2024. All rights reserved.