网站推广与优化怎么做,做网站用html还是php,软文代写公司,seo推广外包tinylog的大小仅为75 KB#xff0c;是广泛使用的经典日志记录框架Log4j和Logback的轻型替代方案。 经过三年的开发#xff0c;最终版本1.0刚刚于 3月底发布 。 在几个设计问题中#xff0c;tinylog采取了与Java中经典日志记录框架完全不同的方法。 本文将介绍与Log4j和Logba… tinylog的大小仅为75 KB是广泛使用的经典日志记录框架Log4j和Logback的轻型替代方案。 经过三年的开发最终版本1.0刚刚于 3月底发布 。 在几个设计问题中tinylog采取了与Java中经典日志记录框架完全不同的方法。 本文将介绍与Log4j和Logback的区别和相似之处并在tinylog中进行简要介绍。 静态记录器 通常对于每个使用日志记录的类都必须创建自己的记录器实例。 所有这些记录器都按层次结构命名通常使用完全限定的类名。 在SLF4JLogback的日志记录API以及Log4j 1.x中必须显式传递类名 public class MyClass {private static final Logger logger Logger.getLogger(MyClass.class);} 与常规工作一样记录器的创建通常是从其他类中复制的。 但是在这种情况下很容易忘记更改class参数这可能导致错误的日志条目。 为避免此类问题Log4j 2.x能够自行检测该类。 不再需要将类名作为参数传递。 tinylog更进一步并且不再需要为每个类创建自己的记录器实例。 相反tinylog具有静态记录器可以在其上直接调用所有记录方法 public class Application {public static void main(String[] args) {Logger.info(Hello {}!, args[0]);}}组态 可以通过三种方式配置tinylog通过属性文件通过系统属性可以设置为“ -D”参数和通过流畅的API编程。 配置在运行时可以更改并且始终始终设置为原子。 对于生产环境建议将名称为“ tinylog.properties”的属性文件放入默认包中。 如果未明确指定其他配置tinylog将默认加载此属性文件。 缺省情况下tinylog仅输出日志级别为info或更高的日志条目。 所有其他将被丢弃。 特别是对于开发环境更改全局日志记录级别以进行调试以及更改某些软件包或类来进行跟踪是有意义的。 具有定义的日志格式和日志记录级别的属性文件可能类似于以下示例 tinylog.level debug
tinylog.levelcom.example trace
tinylog.format {level}: {class}.{method}()\t{message}伐木作家 tinylog默认将所有日志条目写入控制台。 可以通过定义另一个编写器来覆盖此默认行为。 除了写入控制台外还支持写入文件和SQL数据库。 tinylog具有三种不同的写入文件的编写器 FileWriter SharedFileWriter和RollingFileWriter 。 FileWriter将日志条目写入定义的日志文件。 例如可以通过以下方式在属性文件中定义它 tinylog.writer file
tinylog.writer.filename log.txt SharedFileWriter工作方式与FileWriter相同但是支持将应用程序的多个实例同时记录到同一日志文件中而不会发生任何冲突。 RollingFileWriter允许在重新启动应用程序后继续现有的日志文件。 可以通过策略指定何时必须启动新的日志文件。 可以将定义数量的旧日志文件存储为备份。 在此示例中每天将启动一个新的日志文件并且最近7天的日志文件将作为备份存储并以时间戳记命名 tinylog.writer rollingfile
tinylog.writer.filename log.txt
tinylog.writer.policies daily
tinylog.writer.backups 7
tinylog.writer.label timestamp性能 通常每个日志条目的日志记录成本仅为几纳秒。 但是可以通过几种选择来提高速度。 最有效的方法是通过设置属性“ tinylog.writer.bufferedtrue ”并通过“ tinylog.writingthreadtrue ”激活写入线程来启用缓冲写入以避免主应用程序被缓慢的IO操作阻塞。 但是两者都有一个缺点就是在JVM崩溃后最后一个日志条目因此也是最重要的日志条目可能会丢失。 特别是对于大型项目通常将类和方法名称与每个日志条目一起输出以简化查找相应代码的过程。 但是Log4j和Logback警告说这将导致性能损失因为此类堆栈跟踪信息的生成非常昂贵。 由于其体系结构tinylog始终知道堆栈跟踪中调用者的确切深度。 因此tinylog可以仅提取单个所需的堆栈跟踪元素而不必生成整个堆栈跟踪。 这样可以使记录速度加快多次而无需放弃重要的堆栈跟踪信息。 结论 本文可能仅在tinylog中进行简要介绍。 可以在tinylog网站上找到所有配置参数的完整手册 。 tinylog是根据Apache License 2发布的 因此可以在开源以及商业项目中使用。 还有Log4j 1.x的外观和SLF4J的绑定以简化迁移。 除其他功能外还计划在即将发布的版本中包括用于写入的包含和排除以及用于通过邮件发送日志的MailWriter 。 翻译自: https://www.javacodegeeks.com/2015/04/simplify-your-logging-with-tinylog-1-0.html