in android program use slf4j-logback. xml-configuration work fine:
<configuration> <property name="log_dir" value="/sdcard/results/.logs" /> <appender name="logcat" class="ch.qos.logback.classic.android.logcatappender" > <tagencoder> <pattern>akrit</pattern> </tagencoder> <encoder> <pattern>[%class{0}][%thread] %msg%n</pattern> </encoder> </appender> <appender name="file" class="ch.qos.logback.core.rolling.rollingfileappender"> <file>${log_dir}/log.txt</file> <append>true</append> <encoder> <pattern>%date{iso8601} [%thread] %-5level %logger{0} %msg%n</pattern> </encoder> <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy"> <filenamepattern>${log_dir}/log.%d.txt</filenamepattern> <maxhistory>14</maxhistory> </rollingpolicy> </appender> <root level="debug" > <appender-ref ref="logcat" /> <appender-ref ref="file" /> </root>
but same code-logic, configured programmatically, dont work - logcat , logfile empty:
package projects.common.logger; import org.slf4j.loggerfactory; import ch.qos.logback.classic.level; import ch.qos.logback.classic.logger; import ch.qos.logback.classic.loggercontext; import ch.qos.logback.classic.android.logcatappender; import ch.qos.logback.classic.encoder.patternlayoutencoder; import ch.qos.logback.classic.spi.iloggingevent; import ch.qos.logback.core.rolling.rollingfileappender; import ch.qos.logback.core.rolling.timebasedrollingpolicy; public class logback { private static boolean debugmode = true; private static string logpath = null; public static logger getlogger(class<?> _clazz) { //return getloggerxml(_clazz); return configurelogbackdirectly(_clazz, debugmode, logpath); } public static logger getloggerxml(class<?> _clazz) { return (logger) loggerfactory.getlogger(_clazz); } public static void setdebugmode(boolean _debugmode) { debugmode = _debugmode; } public static void setlogpath(string _logpath) { logpath = _logpath; } private static logger configurelogbackdirectly(class<?> _clazz, boolean _debug, string _logpath) { loggercontext context = (loggercontext) loggerfactory.getiloggerfactory(); context.reset(); logger root = (logger) loggerfactory.getlogger(_clazz); root.setlevel(level.error); if (_debug) root.setlevel(level.debug); root.addappender(logcat(context)); if (_logpath != null) root.addappender(logfile(context, _logpath)); return root; } private static rollingfileappender<iloggingevent> logfile(loggercontext _context, string _filepath) { rollingfileappender<iloggingevent> rollingfileappender = new rollingfileappender<iloggingevent>(); rollingfileappender.setappend(true); rollingfileappender.setcontext(_context); rollingfileappender.setfile(_filepath + "/log.txt"); timebasedrollingpolicy<iloggingevent> rollingpolicy = new timebasedrollingpolicy<iloggingevent>(); rollingpolicy.setfilenamepattern(_filepath + "/log.%d.txt"); rollingpolicy.setmaxhistory(7); rollingpolicy.setparent(rollingfileappender); rollingpolicy.setcontext(_context); rollingpolicy.start(); rollingfileappender.setrollingpolicy(rollingpolicy); patternlayoutencoder encoder = new patternlayoutencoder(); encoder.setpattern("%date{iso8601} [%thread] %-5level %logger{0} %msg%n"); encoder.setcontext(_context); encoder.start(); rollingfileappender.setencoder(encoder); rollingfileappender.setname("rollingfileappender"); rollingfileappender.start(); return rollingfileappender; } private static logcatappender logcat(loggercontext _context) { patternlayoutencoder encoder = new patternlayoutencoder(); encoder.setcontext(_context); encoder.setpattern("[%thread] %msg%n"); encoder.start(); patternlayoutencoder tag_encoder = new patternlayoutencoder(); tag_encoder.setcontext(_context); tag_encoder.setpattern("%class{0}"); tag_encoder.start(); logcatappender logcatappender = new logcatappender(); logcatappender.setcontext(_context); logcatappender.setencoder(encoder); logcatappender.settagencoder(tag_encoder); logcatappender.setname("logcatappender"); logcatappender.start(); return logcatappender; } }
i.e. if active line "return getloggerxml(_clazz);" - fine, "return configurelogbackdirectly(_clazz, debugmode, logpath);" - nothing. whats wrong?
Comments
Post a Comment