我们平时调用JDK的log来记录日志,都会习惯拿到一个logger,
Logger logger = Logger.getLogger("xxxx");
之后调用Logger的log方法.
public void log(Level level, String msg) {
if (level.intValue() < levelValue || levelValue == offValue) {
return;
}
LogRecord lr = new LogRecord(level, msg);
doLog(lr);
}
但具体细节并没有关注过。而logger内部其实是以LogRecord来记录信息的,它是一个可序列化的类,可以在RMI的方式中传递使用。
今天在处理一个产生NullPointerException的问题。根源是我们自己的代码在记录日志时调用的logger.log()方法,但向log方法传递了一个logRecord,这个Record是自己new出来的,这样的使用的向log方法传Log级别和信息的区别在于,Logger类的doLog方法会给logRecord的loggerName等属性赋上值,
private void doLog(LogRecord lr) {
lr.setLoggerName(name);
String ebname = getEffectiveResourceBundleName();
if (ebname != null) {
lr.setResourceBundleName(ebname);
lr.setResourceBundle(findResourceBundle(ebname));
}
log(lr);
}
和我们自己new 出来的logRecord只是单纯的调用了构造方法,并没有给loggerName这些属性赋值,都是null,在后面显示日志时需要根据LoggerName来区分不同模块的信息,此时会调用loggerNmae来执行equals方法,会导致NullPointerException异常。
分享到:
相关推荐
7. **日志框架改进**:JDK 1.6提供了java.util.logging.Logger,一个轻量级的日志框架,便于开发人员记录应用程序的运行日志。 8. **脚本引擎支持**:通过ScriptEngine接口,JDK 1.6支持JavaScript、Groovy等脚本...
而`Unchecked`异常是运行时异常,继承自`RuntimeException`,如`NullPointerException`、`ArrayIndexOutOfBoundsException`等,它们通常表示程序逻辑错误,可以在运行时忽略或者捕获。 异常处理的结构通常包含`try`...
3:对线程池的基本使用及其部分源码的分析(注意:这里的源码分析是基于jdk1.6;) a:线程池的状态 volatile int runState; static final int RUNNING = 0; 运行状态 static final int SHUTDOWN = 1; 关闭状态;...
ssm070基于SSM框架的校园代购服务订单管理系统的设计与实现(文档+源码)_kaic
在线车位销售系统源码及数据库。该软件使用spring、springMVC和mybatis编写,数据库为mysql。安装时需将代码clone到idea项目中,导入mysql配置,并配置tomcat(开发版本9.0.45),然后启动即可。使用说明:Qiang文件夹包含开发商页面,Da文件夹包含平台页面,Miao文件夹包含用户页面。。内容来源于网络分享,如有侵权请联系我删除。
内容概要:本文档详细介绍了如何使用Google Earth Engine (GEE) 进行基于K-Means算法的土地覆盖分类。首先,用户需要定义感兴趣区域(ROI)并绘制参考区域(如水体、植被、城市区域等)。接下来,设置图像和分类参数,包括选择Sentinel-2影像的时间范围、云量阈值、波段选择等。然后,对选定区域内的影像进行预处理和采样,准备用于训练K-Means聚类器的数据集。训练完成后,将整个影像应用聚类器进行分类,并通过定义颜色调色板来可视化分类结果。最后,提供了可选的导出功能,允许用户将分类结果保存为GeoTIFF格式。 适合人群:具备一定遥感基础知识和GEE使用经验的科研人员或地理信息系统(GIS)专业学生。 使用场景及目标:①帮助用户理解如何利用GEE平台进行土地覆盖分类;②掌握K-Means算法在遥感影像处理中的具体实现步骤;③学会通过参考几何图形辅助解释分类结果;④能够根据实际需求调整参数以优化分类效果。 阅读建议:由于本文档涉及较多技术细节,建议读者在阅读过程中结合实际操作练习,逐步熟悉各个步骤的功能与作用,同时注意查看控制台输出的信息以便及时发现并解决问题。此外,对于不熟悉的术语或概念,可以通过查阅相关文献资料加深理解。
1. 免费PDF编辑软件,轻松修改文字、添加图片! 2. 无需付费,这些软件让PDF编辑超简单 3. 免费软件来袭,轻松搞定PDF编辑难题
钢琴播放音符的程序代码QZQ1.zip
stm32f407ZET6的内部FLASH
内容概要:本文详细探讨了永磁同步电机(Synchronous Permanent Magnet Motor, PMSM) SVPWM (Space Vector Pulse Width Modulation) 弱磁控制的仿真方法。首先介绍了SVPWM技术的基本原理,包括扇区判断、作用时间计算和开关序列生成等关键步骤。接着阐述了弱磁控制的原理,特别是前馈弱磁法的应用,通过调整电流相位和幅值来扩展电机的调速范围。最后,利用Simulink建立了完整的仿真模型,包括电机模型、SVPWM模型和弱磁控制模型,通过仿真实验验证了不同控制策略对电机性能的影响。 适合人群:从事电机控制系统设计的研发人员、高校相关专业师生、对电力电子技术和电机控制感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解永磁同步电机SVPWM弱磁控制原理和技术实现的研究人员,旨在帮助他们掌握Simulink建模技巧,提升对复杂电机控制系统的理解和实际操作能力。 其他说明:文中提供了详细的理论背景和技术细节,有助于读者更好地理解SVPWM弱磁控制的工作机制,并为实际应用提供有价值的参考。
毕业设计-飞悦旅游小程序1.9.12+分销1.0.3-整站商业源码.zip
内容概要:本文详细介绍了ABB选项功能的开通流程及其授权文件的操作方法,特别是针对ROBWARE 6万能密钥的应用。首先阐述了ABB选项功能的意义,接着逐步讲解了从确定需求到最终激活配置的一系列步骤,包括联系技术支持、提供必要信息、下载安装软件或固件更新等环节。对于授权文件部分,则强调了其重要性、获取方式、安装使用规范以及后续的更新维护措施。最后,特别提醒了ROBWARE 6万能密钥的安全使用、正确操作和及时更新要点。 适合人群:从事工业自动化领域的技术人员,尤其是负责ABB设备管理和维护的专业人士。 使用场景及目标:帮助用户掌握ABB设备选项功能的开通方法,确保授权文件的合法有效使用,保障设备正常运行,提高工作效率。 其他说明:文中多次提到遇到问题时要及时联系ABB官方技术支持团队,确保操作无误。
内容概要:本文详细介绍了单相并网逆变器的Matlab仿真研究,涵盖离网仿真、PLL锁相环技术和电感电流谐波含量优化。文中首先讨论了离网仿真的搭建方法,强调了滤波电路参数的选择及其重要性。接着深入探讨了PLL锁相环的设计,展示了如何通过调整PI参数使锁相环快速稳定地锁定电网相位,并具备良好的抗干扰能力。最后,针对电感电流谐波含量优化,提出了准PR控制器的设计思路,确保THD保持在较低水平。同时,还提到了并网瞬间冲击电流的处理方法,采用软启动电路有效控制冲击电流。 适合人群:电力电子工程师、科研人员以及对逆变器仿真感兴趣的学者和技术爱好者。 使用场景及目标:适用于需要进行单相并网逆变器仿真研究的场合,帮助研究人员更好地理解和掌握逆变器的工作原理和优化方法,提高仿真精度和实际应用效果。 其他说明:文中提供了具体的参数设置和MATLAB代码片段,便于读者在实践中参考和验证。
内容概要:本文详细介绍了利用Comsol进行工件感应加热仿真的方法和技术。首先概述了Comsol作为多物理场仿真工具的优势,特别是在工件感应加热中的应用。接着深入探讨了温度场和电磁场的耦合计算,解释了这两者的相互作用以及如何通过仿真获得工件加热过程中详细的温度分布和电磁场强度。文中还提供了具体的实证案例,展示了如何通过仿真优化加热工艺,从而提升生产效率。最后给出了Matlab代码示例,指导用户如何在Comsol中设置和运行仿真模型,获取并可视化仿真结果。 适合人群:机械工程专业人员、制造行业工程师、仿真技术爱好者。 使用场景及目标:适用于需要深入了解和优化工件感应加热过程的专业人士,旨在提高加热工艺的精度和效率,降低能耗,提升产品质量。 其他说明:文章不仅提供了理论知识,还包括具体的操作指南和实例演示,有助于读者快速上手并在实践中应用所学内容。
基于fastica算法的混合信号分离测试,测试了规律信号,语音信号,以及图像等多种混合数据的分离。 运行注意事项:使用matlab2021a或者更高版本测试,运行里面的Runme.m文件,不要直接运行子函数文件。运行时注意matlab左侧的当前文件夹窗口必须是当前工程所在路径。 具体可观看提供的操作录像视频跟着操作。
毕业设计-万能门店 最新 V7.41 带9大插件-整站商业源码.zip
内容概要:本文深入介绍了AGV-WCS(自动导引车-仓库控制系统)调度系统的构建,涵盖从源码到数据库设计的各个方面。系统采用C#语言开发,提供了完整的源码、数据库结构及详细的讲义。文中通过具体的代码片段展示了路径规划算法的基本原理,同时讲解了数据库中关键表的设计及其操作方法。此外,还包括了系统的功能截图和讲义说明,帮助用户更好地理解和使用该系统。 适合人群:物流与仓储自动化领域的技术人员、软件开发者、研究学者。 使用场景及目标:适用于希望深入了解AGV-WCS调度系统的工作机制和技术实现的人群,旨在提升仓储管理和自动化水平。 其他说明:随着技术的进步,未来AGV-WCS调度系统将朝着更加智能化、高效化的方向发展,为现代仓储管理带来革新。
内容概要:本文介绍了一款新的UDS测试上位机工具,它能够全面覆盖主流服务并提供丰富的测试用例。该工具采用配置文件驱动方式,支持YAML格式配置,允许用户通过简单的配置文件实现复杂的测试流程自动化。文中详细介绍了工具的关键特性,如自动化的全服务扫描、智能的会话管理和错误处理机制、以及强大的测试报告生成功能。此外,还展示了如何利用Python进行自定义算法集成,使得工具在面对不同厂商的特殊需求时更加灵活高效。最后提到该工具在实际应用中的表现及其相对于传统工具的优势。 适合人群:从事汽车电子行业,特别是需要进行UDS诊断测试的技术人员和工程师。 使用场景及目标:适用于需要频繁进行UDS协议测试的工作环境,旨在提高测试效率、减少人工干预、增强测试覆盖率和准确性。同时,对于希望深入了解UDS协议内部运作机制的研究人员也有很大帮助。 其他说明:尽管当前版本存在一些局限性(如DoIP支持尚在开发),但开发者社区活跃,未来有望进一步完善功能。
英飞凌 TC3XX 中文翻译版拆分1
内容概要:本文详细介绍了双闭环控制和最近电平逼近调制(NLM)在MMC模块化多电平换流器仿真中的应用。具体涵盖了功率外环和电流内环的双闭环控制策略,电流内环采用PI+前馈解耦的方法,以及基于排序的电容电压均压技术和环流抑制技术。通过MATLAB/Simulink进行建模,实现了11kV直流转6.6kV交流的逆变侧仿真,展示了如何优化电感THD、提高功率传输效率和保持电压电流波形的对称性。 适合人群:从事电力电子研究的技术人员、高校相关专业师生、对MMC换流器仿真感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解MMC换流器内部工作机制及其仿真的研究人员和技术开发者。目标是在掌握双闭环控制和NLM调制的基础上,能够独立构建和优化MMC换流器仿真模型,解决实际工程中的问题。 其他说明:文中提供了具体的MATLAB代码片段,帮助读者更好地理解和实现关键控制算法。同时强调了在仿真过程中需要注意的一些常见问题和解决方案。