LOG4J i Android
Jeg har et Java-projekt med mange filer, som bruger LOG4J. Nu prøver jeg at portere det til Android-platformen. Er det muligt at genbruge koden, som den er, med LOG4J funktionskald?
Nuværende forståelse:
- Ejendomskonfiguration fungerer ikke (afhængig af bønner)
- Jeg prøvede med LOG4J til Android og SL4J Lib. Ingen succes.
Arbejder. Men ingen nytte
org.apache.log4j.Logger root = org.apache.log4j.Logger.getRootLogger(); final SocketAppender appender = new SocketAppender("192.168.123.123", 3333); root.addAppender(appender); // SLF4J - Not working org.slf4j.Logger logger; logger = LoggerFactory.getLogger(MyClass.class); // LOG4J for Android - Not working ConfigureLog4J.configure(); logger = Logger.getLogger( MyClass.class );
Mangler jeg noget? Vil du pege på nogle fungerende eksempler?
Svar
Løsning ved at bruge android-logging-log4j.jar.
Her er eksempelkode:
public class ALogger { public static org.apache.log4j.Logger getLogger(Class clazz) { final LogConfigurator logConfigurator = new LogConfigurator(); logConfigurator.setFileName(Environment.getExternalStorageDirectory().toString() + File.separator + "log/file.log"); logConfigurator.setRootLevel(Level.ALL); logConfigurator.setLevel("org.apache", Level.ALL); logConfigurator.setUseFileAppender(true); logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n"); logConfigurator.setMaxFileSize(1024 * 1024 * 5); logConfigurator.setImmediateFlush(true); logConfigurator.configure(); Logger log = Logger.getLogger(clazz); return log; } }
I din kode skal du erstatte nedenstående linjer:
PropertyConfigurator.configure(MY_PROP_FILE); logger = Logger.getLogger( MyClaZZ.class );
Med:
logger = ALogger.getLogger(MyClazz.class);