本篇文章给大家分享的是有关使用java如何实现异步将日志写到文件中,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
java异步写日志到文件中详解
实现代码:
package com.tydic.ESUtil; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Properties; public class LogWriter { // 日志的配置文件 public static final String LOG_CONFIGFILE_NAME = "log.properties"; // 日志文件名在配置文件中的标签 public static final String LOGFILE_TAG_NAME = "logfile"; // 默认的日志文件的路径和文件名称 private final String DEFAULT_LOG_FILE_NAME = "./logtext.log"; // 该类的唯一的实例 private static LogWriter logWriter; // 文件输出流 private PrintWriter writer; // 日志文件名 private String logFileName; private LogWriter() throws LogException{ this.init(); } private LogWriter(String fileName) throws LogException{ this.logFileName = fileName; this.init(); } public synchronized static LogWriter getLogWriter()throws LogException{ if (logWriter == null){ logWriter = new LogWriter(); } return logWriter; } public synchronized static LogWriter getLogWriter(String logFileName)throws LogException{ if (logWriter == null){ logWriter = new LogWriter(logFileName); } return logWriter; } public synchronized void log(String logMsg) { this.writer.println(new java.util.Date() + ": " + logMsg); } public synchronized void log(Exception ex) { writer.println(new java.util.Date() + ": "); ex.printStackTrace(writer); } private void init() throws LogException{ //如果用户没有在参数中指定日志文件名,则从配置文件中获取。 if (this.logFileName == null){ this.logFileName = this.getLogFileNameFromConfigFile(); //如果配置文件不存在或者也没有指定日志文件名,则用默认的日志文件名。 if (this.logFileName == null){ this.logFileName = DEFAULT_LOG_FILE_NAME; } } File logFile = new File(this.logFileName); try { // 其中的FileWriter()中的第二个参数的含义是:是否在文件中追加内容 // PrintWriter()中的第二个参数的含义是:自动将数据flush到文件中 writer = new PrintWriter(new FileWriter(logFile, true), true); System.out.println("日志文件的位置:" + logFile.getAbsolutePath()); } catch (IOException ex) { String errmsg = "无法打开日志文件:" + logFile.getAbsolutePath(); // System.out.println(errmsg); throw new LogException(errmsg, ex); } } private String getLogFileNameFromConfigFile() { try { Properties pro = new Properties(); //在类的当前位置,查找属性配置文件log.properties InputStream fin = getClass().getResourceAsStream(LOG_CONFIGFILE_NAME); if (fin != null){ pro.load(fin);//载入配置文件 fin.close(); return pro.getProperty(LOGFILE_TAG_NAME); } else { System.err.println("无法打开属性配置文件: log.properties" ); } }catch (IOException ex) { System.err.println("无法打开属性配置文件: log.properties" ); } return null; } //关闭LogWriter public void close() { logWriter = null; if (writer != null){ writer.close(); } } public static void main(String[] args) { LogWriter logger = null; try { String fileName = "d:/temp/logger.log"; logger = LogWriter.getLogWriter(fileName); // logger.log("First log!"); // logger.log("第二个日志信息"); // logger.log("Third log"); // logger.log("第四个日志信息"); String content="tableaA|device_number|13701010"; StringBuffer sb=new StringBuffer(); for(int i=0;i<1000000;i++){ sb.append(content).append(i).append(";\n"); } content=sb.toString(); long startTime=System.currentTimeMillis(); logger.log(content); long endTime=System.currentTimeMillis(); System.out.println("总消耗时间:"+(endTime-startTime)); logger.close(); // ReadFromFile.readFileByLines(fileName); } catch (LogException e) { e.printStackTrace(); } } }
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机使用java如何实现异步将日志写到文件中
后端开发2023-05-31
如何使用Java文件实现异步编程?
后端开发2023-07-07
如何使用Log4j、ActiveMQ和Spring实现异步日志
后端开发2024-04-02
如何使用Html5实现异步上传文件
后端开发2024-04-02
如何使用 Golang 实现异步文件上传?
后端开发2024-05-13
如何使用shell将脚本输出结果记录到日志文件
后端开发2023-06-09
如何在Windows操作系统中使用Java编写文件日志程序?
后端开发2023-09-24
如何在Java中使用Ajax异步上传文件
后端开发2023-06-15
如何在PHP和NumPy中实现高效的异步文件读写?
后端开发2023-10-05
Java中如何使用对象实现异步编程?
后端开发2023-07-07
如何使用Java缓存HTTP请求日志?详解实现步骤
后端开发2023-07-24
如何使用ByteArrayOutputStream实现将数据写入本地文件
后端开发2023-06-22
异步编程如何帮助Java应用程序实现更好的日志记录?
后端开发2023-08-17
如何在ASP文件中使用异步编程来实现重定向?
后端开发2023-10-02
使用Spring Batch如何实现将txt文件写入数据库
后端开发2023-05-31
Bash中如何使用Java API实现高效的日志管理?
后端开发2023-10-27
使用Java如何将SQL脚本文件执行到数据库中
后端开发2023-05-31
如何在 Go 语言中实现一个二维码生成器,并将生成日志保存到文件?
后端开发2023-07-26
如何使用Java编写高效的关键字搜索Linux日志文件的程序?
后端开发2023-08-11
如何在 Golang 中使用管道实现文件读写?
后端开发2024-05-15
咦!没有更多了?去看看其它编程学习网 内容吧