1

Android アプリケーションにログインするために Logback ライブラリを使用していますが、うまく機能します。ただし、アプリケーションをエクスポートし、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>

次のように、クラス MyEncoder と proguard 構成ファイルの 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.** { *; }
# ...

そして、これはログバック設定ファイル (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 に答える