什么是实时系统的良好日志logging库(快速且不创build对象)?

什么是实时系统的良好日志logging库(快速且不创build对象)?,第1张

概述什么是实时系统的良好日志logging库(快速且不创build对象)?

我尝试了logback,但它创造了一吨垃圾。 有没有人听说过一个很好的实时Java?

@BernIE:我做了一个logging1Mcaching消息的循环,GC疯了。

'optimize'属性指令被忽略

大型项目启动缓慢

小文件大容量存储策略

优化 – 从windows磁盘读取文件

在调整PHP图像大小时,服务器负载会增加

你可以看看由Coral Blocks设计的CoralLog (与我有联系),它产生零垃圾,当记录一个64字节的消息时,平均等待时间为53纳秒。 就吞吐量而言,它可以记录每秒260万个带有时间戳的 64字节消息和每秒350万个没有时间戳的 64个字节消息。 完整的基准测试结果可以在这里看到。

如果您将邮件大小减少到16个字节,则可以每秒记录520万条邮件,而不需要时间戳记。

以下是一个简单的吞吐量测试:

package com.coralblocks.corallog.bench; import java.io.file; import java.nio.ByteBuffer; import com.coralblocks.corallog.AsyncThread; import com.coralblocks.corallog.Log; import com.coralblocks.corallog.Logger; public class PerformanceTest4 { public static voID main(String[] args) throws Exception { int batchSize = Integer.parseInt(args[0]); int passes = Integer.parseInt(args[1]); int msgSize = Integer.parseInt(args[2]); byte[] msgBytes = new byte[msgSize]; // build a dummy message: for(int i = 0; i < msgBytes.length; i++) { msgBytes[i] = (byte) String.valueOf(i % 10).charat(0); } ByteBuffer bb = ByteBuffer.wrap(msgBytes); Log.setIncludetopheader(false); String dir = "."; String filename = "throughput.log"; Logger logger; boolean isMmap = System.getProperty("logMemoryMappedfile","true").equals("true"); if (isMmap) { logger = Log.createMemoryMappedLogger(dir,filename,null /* no timestamps */,false /* not synchronized */,true /* asynchronousous */); } else { logger = Log.createLogger(dir,null,false,true); } int count = 0; while(count < passes) { long start = System.nanoTime(); for(int i = 0; i < batchSize; i++) { bb.position(0); logger.log(bb); } long time = System.nanoTime() - start; double seconds = (((double) time) / 1000000000L); System.out.println("Batch " + (count + 1) + " took: " + seconds + " s"); count++; } logger.drainCloseAnDWait(); boolean deletefile = System.getProperty("deletefile","true").equals("true"); if (deletefile) { file f = new file(dir,filename); f.delete(); } AsyncThread.drainAndDIE(); // just so the vm will exit... (async thread is not daemon) } }

我有一个库,可以在一秒钟内记录文本或二进制数据,而不会产生垃圾或系统调用。

https://github.com/peter-lawrey/Java-Chronicle

日志还可以通过任意数量的读取过程实时读取,为您提供持久的队列,每秒可以处理超过500万条消息。

Javolution提供日志功能。

从LogContext javadoc:

相同的代码可以使用系统out / err,标准日志记录(java.util.logging),Log4J甚至Osgi日志服务来运行。 可以通过configuration在运行时进行选择)。

(' configuration '是指Javolution类)。

尝试log4j系统: http : //logging.apache.org/log4j/1.2/

总结

以上是内存溢出为你收集整理的什么是实时系统的良好日志logging库(快速且不创build对象)?全部内容,希望文章能够帮你解决什么是实时系统的良好日志logging库(快速且不创build对象)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1155706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存