1

我正在使用 Logback 库来登录我的 android 应用程序,它运行良好。但是,当我导出应用程序并使用 Proguard 混淆代码时,它无法正常工作(我使用的是 FileAppder,并且未创建文件)。

这是我的配置文件:

<configuration>
    <appender
        name="userClicksAppender"
        class="ch.qos.logback.core.FileAppender" >
        <file>
                        /sdcard/Test/data/log.txt
        </file>
        <append>
                    true
        </append>
        <encoder class="com.android.gooapplication.model.MyEncoder" >
            <pattern>
                        %-4relative [%thread] %-5level %logger{35} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <logger name="userClicksLogger" >
        <appender-ref ref="userClicksAppender" />
    </logger>
</configuration>

我试图跳过 proguard 配置文件中的 MyEncoder 类和整个 logback 包,如下所示:

-keep public class com.android.gooapplication.model.MyEncoder
-keep public class ch.qos.logback.**
-keep public public class org.slf4j.**

但仍然没有成功。

你怎么看?非常感谢

4

1 回答 1

2

这是我的解决方案,它有效

这是 proguard 配置文件 (proguard.cfg) 的一部分:

# ...
-keep public class org.slf4j.** { *; }
-keep public class ch.** { *; }
# ...

这是 logback 配置文件(assets/logback.xml)

将 pack.of.your.application更改为您自己的包名称:

<configuration>
    <appender name="file" class="ch.qos.logback.core.FileAppender">

        <file>/data/data/pack.of.your.application/files/log.txt</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="ALL">
        <appender-ref ref="file" />
    </root>
</configuration>

这是 Maven 依赖项:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.6</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.0.7</version>
</dependency>
于 2013-09-03T07:06:32.760 回答