问题描述
我正在使用这个库在我的 android 应用程序中添加日志功能
implementation 'org.slf4j:slf4j-api:1.7.30'
implementation 'com.github.tony19:logback-android:2.0.0'
我已经设置了 LoggingFactory
object LoggingFactory {
private val logger: Logger = LoggerFactory.getLogger(LoggingFactory::class.java.simpleName)
val DEFAULT_LOG_LEVEL_ENG: Level = Level.TRACE
val DEFAULT_LOG_LEVEL_USER: Level = Level.WARN
/**
* Initialization of logging framework. This should be called only when app starts.
*
*
* Default configuration is loaded and if custom configuration is present,it is applied on top
* of it.
*/
fun initLogger() {
applyCustomConfigurationorLoadDefault(LogLevel.Debug)
}
private fun applyCustomConfigurationorLoadDefault(logLevel: LogLevel) {
logger.debug("____LOGGER START____")
val rootLogger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME) as ch.qos.logback.classic.Logger
val levelToSet: Level? = toSlf4jLevel(logLevel)
if (levelToSet == null || LogLevel.Default.equals(logLevel)) {
configureLogbackDirectly()
} else {
if (rootLogger.level != levelToSet) {
logger.info("Setting ROOT log level to $levelToSet")
rootLogger.level = levelToSet
}
}
}
/**
* Conversion to logging framework level.
*
* @return level or `null` when mapping cannot be done
*/
fun toSlf4jLevel(logLevel: LogLevel?): Level? {
return if (logLevel == null) {
null
} else when (logLevel) {
LogLevel.Verbose -> Level.TRACE
LogLevel.Debug -> Level.DEBUG
LogLevel.Info -> Level.INFO
LogLevel.Warning -> Level.WARN
LogLevel.Error -> Level.ERROR
LogLevel.Off -> Level.OFF
else -> null
}
}
private fun configureLogbackDirectly() {
// reset the default context (which may already have been initialized)
// since we want to reconfigure it
val lc = LoggerFactory.getILoggerFactory() as LoggerContext
lc.stop()
// setup FileAppender
val encoder = PatternLayoutEncoder()
encoder.context = lc
encoder.pattern = "%msg%n"
encoder.start()
val logcatAppender = LogcatAppender()
logcatAppender.encoder = encoder
logcatAppender.start()
val root = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME) as ch.qos.logback.classic.Logger
root.addAppender(logcatAppender)
// default log level
if (isDebugBuild) {
root.level = DEFAULT_LOG_LEVEL_ENG
} else {
root.level = DEFAULT_LOG_LEVEL_USER
}
logger.info("Default logger configuration loaded with level " + root.level)
}
val isDebugBuild: Boolean
get() = "eng" == Build.TYPE
}
和 logback.xml 之类的
<configuration debug="true">
<property name="LOG_DIR" value="/storage/emulated/0/Android/data/com.package.name/files/logs" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- active log file -->
<file>${LOG_DIR}/log.txt</file>
<encoder>
<pattern>%logger{35} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>5</maxHistory>
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
</appender>
<root level="TRACE">
<appender-ref ref="FILE" />
</root>
</configuration>
我想要做的是我想要不同的日志文件,例如 ..../logs/accounts_logs.txt ..../logs/messages_logs.txt ..../logs/files_logs.txt 在我的代码中,我想选择在每次我想记录一些东西时在哪个文件中写入我的输出。
这可能吗?我该怎么办?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)