java .lck文件_关于Java日志log.lck文件的出现原因和关闭方法
出现的问题
实验中要求用log记录所有出现的异常情况和主程序的各个操作,但我们主程序里的各个操作是调用的是各个类的方法,如果全部在各个类里只抛出异常在主程序里处理,那主程序就会很冗余,而且也不符合ADT“自己的事自己干”的思想,一般我们向上抛出的异常是这个类处理不了的,所以我的想法是在各个类中就用try catch语句处理当下出现的异常,那就需要在各个类中就用log记录,一开始我是在在每个类都写上这么一段代码
Logger log = Logger.getLogger("log");
Calendar current = Calendar.getInstance();
FileHandler filehandler = new FileHandler("src/Logging/logging");
current.setFirstDayOfWeek(Calendar.MONDAY);
log.setLevel(Level.INFO);//设置级别
log.addHandler(filehandler);
//将异常信息输出到logging文件中显示出来
```java
current = Calendar.getInstance();
log.warning("发生时间:" + current.getTime().toString() + " 异常类型:NotdependencyrelationException" +
" 类名:FileLoader" + " 方法名:readFlightInfo" + " 具体异常信息:" + e.toString1() + " 处理结果:忽略该条命令行所在的航班计划项");
//在catch语句中写log
我原本以为我在哪几个类中写了这样的语句,程序运行时就会出现几个logging文件,我可以分别在logging文件中查看各种异常情况,但是运行时出现了问题:
并不是我运行一次主程序就只出现一个相应类中的logging文件,而是每一次我调用类,就会生成一个logging文件,只是后缀名改变,logging.1;logging.2;logging.3…而且伴随出现的还有logging.lck这个迷惑玩意儿。
可想而知,实验中输入是一个文件,文件里有十几万个对象需要调用不同类的方法,每一次调用出现两个logging文件,一瞬间直接给我弄死机。然后我就先考虑 .lck是个什么鬼。
logging.lck
见名思意,.lck表示的就是lock锁的含义,意思是一旦生成logging文件就锁住它,只有该进程结束了才释放它,这个锁其他进程不能获取,也就不能写进去东西。什么是进程结束就是主程序结束。所以在主程序没有结束前,我每调用一次类中方法就生成一个logging文件并且锁住它,下一次再生成一个新的文件和.lck文件。这就是问题的原理,好,这样肯定不对,下面说出我解决问题的思路和走的山路十八弯。
解决问题
一开始我就想那就不要锁住,每次调用都写进一个logging文件中,那就不会出现文件爆炸的情况,事实上通过查阅资料确实是有这样的方法的。在记录日志后写代码如下:
for(Handler h:log.getHandlers())
{
h.close(); //must call h.close or a .LCK file will remain.
}
这样就可以了,但又有新的 问题,这不是实验要求的结果呀,实验中还需要对所有异常情况有查询功能,这样文件中永远只有一种操作上的异常,不能保留所有操作的异常,就没办法查询了。显然pass掉这种方法。
我就开始想,之所以每次都会生成logging文件,就是因为这句语句
FileHandler filehandler = new FileHandler(“src/Logging/logging”);
log.addHandler(filehandler);
如果没有这句语句,只保留日志记录的语句,那是把异常情况写到哪里呢,我实验一下,删除所有类中的FileHandler语句,只保留主程序的,结果令我惊喜。所有其他各个类中方法的异常情况全部写到了主程序的logging文件中,而且因为主程序只会生成一个logging文件也不会存在生成无数文件的情况,那这样就可以实现日志查询功能了,只要在所有操作后查询一个logging文件就可以按照过滤条件输出所有满足条件的异常。完美。
小结
这里面显然涉及了线程安全,锁的机制,日志等java知识,我讲的主要还是如何实操以及根据实验得到的一些最浅显的原理,里面真正的原理型知识需要特别学习相关java知识才可以掌握,不然基层东西不了解,写代码会遇到很多你想破头脑都想不出来的bug。
java .lck文件_关于Java日志log.lck文件的出现原因和关闭方法相关推荐
- java++记录+运行_记录java+testng运行selenium(三)---xml、ini、excel、日志等配置
一: ini文件 ini目前只用处存储浏览类型及需要打开的url,ini文件放在configs文件夹下面. 读取ini代码如下: 1 packagetoolskit.documents;2 3 imp ...
- java怎么抓取测试apk日志_Android测试日志文件抓取与分析
1.log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shel ...
- java在客户端生成文件_用Java编写创建一对客户端/服务器程序,利用数据报将一个文件从一台主机传送到另一...
展开全部 下面是e5a48de588b63231313335323631343130323136353331333337386564我自己写的一个读取并显示txt文件的demo,希望对您有帮助. pu ...
- cmd 将文件夹下文件剪切到另外一个文件_总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇...
本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
- java 流 复制文件_【Java】使用字节流复制文件
其实用java程序复制文件并不难 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...
- java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成
重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 前言 有时候,业务系统要求提供一个PDF文件导出的功能,这时候我们就需要将数据库的对应数据查询出来,然后生成 ...
- java类索引_《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合...
讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了.现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志.类索引.父类索引.接口索引集合. 1. 访问标 ...
- java 删除压缩zip文件_从ZIP存档中删除文件,而无需在Java或Python中解压缩 - java...
从ZIP存档中删除文件,而无需使用Java(首选)或Python解压缩 你好 我使用包含数百个高度压缩的文本文件的大型ZIP文件.解压缩ZIP文件时,可能要花一些时间,并且很容易消耗多达20 GB的磁 ...
- java剪切txt文件_用Java把剪切板的内容实时保存到txt
test类:提示用户程序已启动,提示保存位置,清空剪切板. package com.ariya.service; import com.ariya.service.impl.ClipboardServ ...
最新文章
- 保持图片和图片框一致的方法 收藏
- Abstract Factory抽象工厂模式
- __declspec(selectany)的作用
- 发送请求_发送soap请求调用WSDL
- window下的SCROLLbar的使用技巧
- VUE3搞一下数据录入
- Effective系列经典著作,铺就程序员殿堂之路
- GitHub 添加 SSH keys
- [DSF] Devices Syndication Foundation Architecture V1
- SSD1306 - OLED显示屏
- Java之XML转Json
- 程序员该如何释放压力
- php怎么防止页面被劫持,完美解决网页被劫持的问题,再也不用担心网页被篡改了!...
- JavaScript根据用户输入动态计算周数
- 一个故事带你了解集线器、交换机与路由器
- TEWA-600AEM天翼光猫超级管理员密码获取
- 四川大学计算机专业调剂,2019年四川大学计算机学院(软件学院)考研调剂信息
- C编译报错: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration]
- Support for the experimental syntax 'decorators-legacy' isn't currently enabled 异常解决
- pop3 smtp iamp
热门文章
- php 获取 客户端,php获取客户端(系统,浏览器)信息
- 通过iclutch、以及class-dump逆向出ios上app的类定义及头文件
- 憨豆爱编程之python来整蛊
- python readline_python的readline()函数
- distinct 去重复,group by 数据分组,还是说拿起就用篇--2(嗯算是吧。)
- 关于显示器分辨率和和缩放与布局的问题,根据UI设计图却发现屏幕放不下
- Python入门-运算符
- 知识付费项目,无本生意,月入1万+,最适合小白操作的项目
- 2022春招Web前端高频面试题(自用,附答案)
- 如何判断一个友情链接的质量