我正在使用在单独进程中启动Android服务的应用程序(在Process1 P1中运行)(在Process2 P2中运行)。
在使用android os> = API 23时遇到常见问题,必须先授予WRITE_EXTERNAL_STORAGE权限才能创建日志目录并进行日志记录,这已经通过初始化Logger上下文解决了:
val loggerContext :LoggerContext = LoggerFactory.getILoggerFactory() as LoggerContext
loggerContext.reset()
val contextInitializer = ContextInitializer(loggerContext)
contextInitializer.autoConfig()
我正在使用这样的RollingFileAppender:
<appender name="myMultiProcessApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/log.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- Group the logs by day -->
<fileNamePattern>${LOG_DIR}/log-%d{yyyy-MM-dd}#%i.zip</fileNamePattern>
<!-- Keeping DAYS_TO_KEEP (defaulting to 5) grouped logs - days in this case -->
<maxHistory>${DAYS_TO_KEEP:-5}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- Assuming a compression ratio of 50% (very conservative) each compressed file should be less than 2MB -->
<maxFileSize>${MAX_FILE_SIZE:-4Mb}</maxFileSize>
<!-- Total Size Cap - this option is not available on logback-android, only on mainstream logback -->
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>[%date{ISO8601}] [%thread] %-5level %logger{36} %M - %msg%n</pattern>
</encoder>
</appender>
问题,情况: P1和P2正在使用使用logback框架进行日志记录的类但是目前只有P2的日志出现在log-File中! 在P1获得所有必要的权限后,P2将从P1开始。
现在问题: 有没有人知道,是否可以从1个Android-App中使用的2个独立进程中写入Logs in 1 File with logback? 我是否必须明确地为P2写入权限?
如果是的话,你能告诉我怎么做吗?
TIA Luke
答案 0 :(得分:1)
答案: 是的,2个进程可能同时写入1个日志文件。 我们必须激活谨慎模式,这需要3倍的时间来记录,但在大多数情况下工作正常:
在文档中查看: documentation for prudent mode in File Appender
谨慎模式有以下限制:
<file></file>
<fileNamePattern>${LOG_DIR}/log-%d{yyyy-MM-dd}#%i.log</fileNamePattern>
请点击此处查看限制:prudent limitations