j2me有哪些记录解决方案?
我特别感兴趣的是轻松排除"发布"版本的日志记录,以获得更小的封装和内存占用.
MicroLog肯定会打赌.它是一个像Log4j这样的Java ME(J2ME)的小型日志库.它支持记录到控制台,文件,RecordStore,Canvas,Form,蓝牙,串行端口(蓝牙,IR,USB),套接字(包括SSL),UDP,Syslog,MMS,SMS,电子邮件或Amazon S3 .
http://sourceforge.net/projects/microlog/
如果您正在使用Proguard进行预处理和混淆,那么您可以拥有一个简单的日志记录类.
public class Log { public static void debug(final String message) { //#if !release.build System.out.println(message); //#endif } }
或者根据需要进行日志记录.现在,如果将release.build属性设置为true,则将注释掉此代码,这将导致一个空方法.Proguard将删除所有空方法的用法 - 实际上,release build将删除所有调试消息.
编辑:
在库级别上考虑它(我正在研究J2ME库的映射)我可能找到了一个更好的解决方案.
public class Log { private static boolean showDebug; public static void debug(final String message) { if (showDebug) { System.out.println(message); } } public static void setShowDebug(final boolean show) { showDebug = show; } }
这样,最终开发人员可以在他/她感兴趣的库中启用日志级别.如果不启用任何内容,则将在最终产品模糊处理中删除所有日志记录代码.甜蜜的:)
/ JaanusSiim
您可以在proguard中使用-assumenosideaffects来完成删除日志记录类:
-assumenosideeffects public class logger.Logger {*;}
而不是必须预处理.