某大型银行深化系统之十九:日志规范

对日志规范的思考 概述       系统上线之后,一旦发生异常,第一件事就是要弄清楚当时发生了什么,用户当时做了什么操作,环境有无影响,数据有什么变化,是不是反复发生等,然后再进一步的确定大致是哪个方面的问题。这时,日志就给我们提供了第一手的资料。 基本原则 ● 不影响系统正常运行; ● 不允许产生安全问题; ● 不允许输出机密信息; ● 日志可供开发人员定位问题的真正原因; ● 日志可供监控系统自动... 阅读详情

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229

        在应用程序中添加程序日志记录可以跟踪代码运行时轨迹,作为日后审计的依据;并且担当集成开发环境中的调试器的作用,向文件打印代码的调试信息。本规定Jave EE项目必须使用Commons-Logging作为日志接口封装,选用Apache提供的可重用组件Log4j作为底层实现。

1日志命名规范

        根日志(root logger)位于日志层次的最顶层,它的日志级别不能指派为空;不能通过使用它的名字直接得到它,而应该通过类的静态方法Logger.getRootLogger得到它(指root logger)。所有其他的日志可通过静态方法Logger.getLogger来实例化并获取,这个方法Logger.getLogger把所想要的logger的名字作为参数,一般取本类的名字作为参数。

2日志信息级别规范

        日志信息输出的优先级从高到低至少应分为五档,分别是Fatal、ERROR、WARN、INFO、DEBUG。这些级别用来指定这条日志信息的重要程度。在测试阶段可以打开所有级别的日志,系统上线后只允许输出INFO以上级别(含INFO)。各级别的日志信息作用规定如下:

2.1致命(Fatal)

        严重的错误,系统无法正常运行,如硬盘空间满等。这个级别很少被用,常暗含系统或者系统的组件迫近崩溃。

2.2错误(Error)

        系统可以继续运行,但最好要尽快修复的错误。这个级别用的较多,常常伴随Java异常,错误(Error)的环境不一定会造成系统的崩溃,系统可以继续服务接下来的请求。

2.3警告(Warn)

        系统可以正常运行,但需要引起注意的警告信息。这个级别预示较小的问题,由系统外部的因素造成的,比如用户输入了不符合条件的参数。

2.4信息(Info)

        系统运行的主要关键时点的操作信息,一般用于记录业务日志。但同时,也应该有足够的信息以保证可以记录再现缺陷的路径。这个级别记录了系统日常运转中有意义的事件。

2.5调试(Debug)

        系统运行中的调试信息,便于开发人员进行错误分析和修正,一般用于程序日志,关心程序操作(细粒度),不太关心业务操作(粗粒度)。系统出现问题时,必须抛出异常,在处理异常时记录日志,且日志级别必须是前三个级别(Fatal\Error\Warning)中的一种。

3日志配置规范

        所有的日志配置文件放在src目录下,编译时随同.class文件一同拷贝到(%webapp_HOME%)\WEB-INF\classes\目录下,这些配置文件必须采用properties文件的编写方法, commons-logging.properties文件用来指定commons-logging的实现为log4j,log4j.properties文件用来配置log4j的所有参数,日志配置信息不得配置在这两个文件以外的文件中。

4日志对多线程的支持规范

        日志记录必须支持多线程。当应用程序同时处理多个客户的请求时,不同客户之间的日志信息写同一个日志文件时不应产生冲突,不同请求的日志信息能被显示并区分出来。在应用系统中,必须使用log4j NDC(Nested Diagnostic Contexts)来处理多线程的日志记录。当程序响应请求时,通过Log4J NDC(Nested Diagnostic Contexts)机制,将日志(logger)推入栈中,当程序完成处理或抛出异常时,NDC弹栈,以保证同一线程日志的一致性。

5日志输出规范

        应用程序禁止直接使用Log4J API,并且禁止使用JDK Console输出(System.out, System.err, ex.printStackTrace(), etc.)。所有的日志实例的属性都应从根日志(root logger)继承。日志信息必须支持输出到控制台(console)和文本文件(TextFiles)。输出到文本文件(TextFiles)的日志,必须提供日志文件分析脚本,以方便查询和阅读。

6日志文件组织与备份规范

6.1文件组织方式

        即日志文件名必须满足<系统名称>.log.yyyyMMddHH的命名规则。yyyyMMddHH表示每日整点时重新命名日志文件,以方便按时间定位日志信息;文件大小限制为最多20Mb,即当日志文件超过20Mb时,旧日志文件重命名为<系统名称>.log.yyyyMMddHH.n(n从1开始编号以步长1递增),新日志写入<系统名称>.log.yyyyMMddHH。这里的<系统名称>表示各个实际项目的英文缩写,英文缩写必须遵循单位对系统英文缩写的统一规定。

6.2日志备份机制

        每天营业结束后,必须先对当天日志进行压缩,再做磁带备份,生产机上保留最近5个工作日的日志备份。
        日志的输出格式(不包括异常树信息)规定如下:
日期(yyyy-M-d) 时间(HH:mm:ss) NDC标志[级别](对应程序文件名:行号)定制信息。即,%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n

7日志内容规范

        对于“敏感”的单位信息,如客户密码、余额等信息,禁止使用debug以上级别的日志方法记录,在开发过程中,也应减少日志对该类信息的记录。
所有的异常(Exception)都必须写在日志中,当系统抛出异常时,除了使用log.error()记录定制信息外,还必须打印异常树信息,例如log.error(定制信息, e)。

8日志编写规范

        在输出日志之前完成字符串操作,禁止一些结构复杂的对象被直接放入日志中作字符串处理。如下方式的日志记录方法是不正确的:

logger.debug("Entry User: " + UserBO + " is " + String.valueOf(entry));

这种调用方式会引起过多的构建信息参数的花费。定制信息的组合必须在输出日志之前完成字符串的操作,可使用StringBuffer提高效率。
        为了防止因特殊情况需要关闭所有系统日志,而引起系统性能急剧下降。要在调用DEBUG时,必须判断DEBUG级别是否生效,其他级别无需判断。如直接调用log.debug(tmpString)是错误的,必须采用以下方法处理DEBUG级别的日志:

if (log.isDebugEnabled()){
    log.debug(tmpString);
}
【信息科学与工程学】【管理科学】第七十二篇 管理层相对基层员工的信息差/资源差/权力差/认知差03 总裁/副总裁 定义系统状态(如:全正常、1个单元故障、降级运行、完全故障),状态间转移率 λ(故障率)和 μ(修复率)构成转移强度矩阵 Q。其中 γ_k = (2π/λ) n_k d_k cosθ_k 为相位厚度,η_k = n_k / cosθ_k (TE波) 或 η_k = n_k cosθ_k (TM波) 为光学导纳,θ_k为层内入射角。用于在光刻机设计阶段评估各子系统(光源、光学、工件台、真空等)的可靠性,识别薄弱环节,计算系统整体可用性(Availability),指导冗余设计和维护策略制定。 阅读详情

相关推荐

JRT0068—2020网上银行系统信息安全通用规范.pdf

银行网上银行信息系统安全管理规范,有银行有关的系统可以参照这个。JRT0068—2020网上银行系统信息安全通用规范

金融系统logback日志规范

应用日志系统 在所有spring-boot的应用中,都是slf4j做日志调用接口,使用logback实现做日志记录 本地开发开发环境使用logback-local.xml,测试环境使用logback-dev.xml,生产环境使用logback-prod.xml日志文件。 所有项目maven依赖写法: dependency> groupId>org.slf4jgroupId>

一名清官 1760

基于STM32F103C8T6的红外循迹避障小车

编程思路:控制核心板IO口的电平(即电机驱动模块的AIN1,AIN2,BIN1,BIN2)从而控制AO1、AO2、BO1、BO2的电平高低,进而控制电机使其正转、反转、不转。由于单纯地拉高拉低电平只能让电机在转与不转的状态切换,故决定利用TIM4的两个通道分别产生两路PWM信号来控制电机速度,四个电机两个一组,同一侧的两个连接在同一个PWM上。(#include "dianji.h"文件中同时写了对循迹模块引脚的初始化)

weixin_48743503的博客 1万+

Java项目日志记录方案

一、概述 1、采用slf4j作为日志API,采用logback作为日志输出工具,用slf4j桥接方式替换掉log4j和commons-logging。 2、采用trace(追踪)、debug(调试)、info(信息)、warn(警告)、error(错误)、fatal(致命)共6种日志级别。 3、采用dev(开发环境)、test(测试环境)、production(生产环

zollty的专栏 1万+

Linux PE vs WinPE:为何麒麟系统修复需要专属工具?

本文探讨了Linux PE与WinPE在修复国产麒麟系统时的关键差异,强调了专属工具的必要性。通过分析文件系统兼容性、引导修复、硬件适配和安全合规等方面,揭示了通用PE工具的局限性,并提供了构建专属修复工具链的实用方案,确保系统维护的高效与安全。

weixin_29290863的博客 1060

从5V降到3.3V,你的LDO到底有多烫?手把手算功耗、选散热,避开这些坑

本文详细解析了LDO在5V转3.3V电路中的发热问题,提供了精确的功耗计算公式和散热设计方法。通过对比不同封装的热阻参数和优化PCB布局,帮助工程师有效降低LDO温度,避免热保护触发。文章还探讨了替代方案的技术拐点,为电源系统优化设计提供实用指导。

weixin_30304375的博客 436

python大型项目中的日志模块_Python中日志模块的使用

前言程序和脚本往往是无人值守运行的,一旦发生问题,就需要我们去追溯当时的情况来定位问题的原因。这便需要我们在程序和脚本中引入日志的功能。相比于print信息,使用logging日志有以下优点可以记录输出日志的时间、文件、函数以及代码行,甚至线程名和线程号可以分等级记录日志(调试级、信息级、警告级、错误级、严重错误级)即可以实时输出到屏幕,也可以输出到文件基本使用Python中使用自带的loggin...

weixin_36422707的博客 787

第21章—技术管理篇(上):身为技术人该怎样带好团队并做好管理者

上节讲了职业规划和学习提升这两个话题,随着职业规划的不断落地,或者自己能力的不断提升,大家也会逐渐被提拔成“职级更高”的人。企业规模扩张时,员工数量也会变多,意味着Boss需要更多的人来辅助管理,而管理者会从外部招聘吗?也许会,但大多企业更喜欢从内部选拔,毕竟人的天性更希望找的人值得信赖。此时,一些能力不错、做事靠谱的老员工,就会被“赶上”管理者的位子。作管理不难,但想要“”就需要一定情商。

运维老生常谈 1366

银行日志处理

与外围系统交换数据 例如信贷管理系统、财务管理系统数据归集等 系统内资金清算 例如通存通兑清算、批量代发代扣等 内部业务处理 例如结息、还息、自动转存、计提应付利息等 对账相关处理 例如生成第三方对账文件等 为数据分析平台准备数据 例如向数据平台传送数据

liujn347的专栏 1666

YOLOv11涨点改进 | 全网独家首发、特征融合创新篇 | ACM 2025顶会 | 引入DAAttn差异感知注意力融合模块,通过动态调整注意力,使模型更准确地识别关键内容,提高精度、并减少冗余计算

本文提出了一种基于DAAttn(差异感知注意力融合)模块改进的YOLOv11模型,用于提升变化检测任务的性能。DAAttn模块通过动态加权特征差异,有效区分有意义变化与噪声(如光照、天气变化),显著提高了模型在复杂场景下的检测精度。该模块采用反转注意力机制,重点关注显著差异区域,同时减少计算冗余。实验表明,改进后的模型在保持计算效率的同时,能够更准确地识别小目标和细节变化。文章详细介绍了DAAttn的原理、优势、实现代码及其在YOLOv11中的集成方法,并提供了两种改进配置方案。

Ai缝合怪、助力小伙伴高效发论文 302

Qt垂直滚动条QVerticalScrollBar详解:从基础到实战的控件开发指南

本文系统解析Qt中QVerticalScrollBar的用法,从基础概念到进阶技巧。主要内容包括:1)基础认知:介绍其继承关系、作用及典型应用场景;2)核心用法:创建方法、关键属性配置和信号槽连接;3)进阶技巧:自定义样式表美化外观,以及与自定义内容区域的联动实现;4)实战注意事项,如避免循环触发和高DPI适配等。文章强调掌握QVerticalScrollBar对提升Qt滚动类功能开发效率的重要性,并建议通过自定义文本编辑器实践巩固知识点。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 759

智能运维案例系列 | 新网银行 X 袋鼠云:银行核心业务系统日志监控平台建设实践...

在聊今天的案例之前,我想首先和大家聊聊当前最热的词汇之一:“数据驱动”。 双11就要到了,当你打开手淘页面,你会收到平台推荐给你的优惠活动信息,你可能感兴趣的商家或者商品, 你随意地逛着,喜欢的商品你可能会点击收藏或者加入购物车,不喜欢的你很快就关掉了商品介绍页面。 30min后,你再一次打开手淘,页面和30min前竟然完全不同。那些被你匆匆关闭页面的...

weixin_33749242的博客 806

【毕设级教程】从0到1实现基于YOLOv8的xView卫星图像目标检测系统(含UI界面,助力遥感智能毕设)

本文基于YOLOv8模型设计了一个面向xView卫星图像的目标检测系统。首先对xView数据集进行了格式转换处理,将原始多边形标注转换为YOLO格式的边界框标注。随后通过配置YOLOv8模型参数完成训练,实现了对卫星图像中建筑、车辆等多类目标的准确识别。为提高系统交互性,采用PyQt开发了可视化界面,支持图像选择、实时检测和结果展示功能。整个系统兼顾学术价值和实用价值,为遥感领域的自动化目标检测提供了可行方案。

m0_64661770的博客 130

Hive速览

一、概述 Hive由Facebook开源,是一个构建在Hadoop之上的数据仓库工具 将结构化的数据映射成表 支持类SQL查询,Hive中称为HQL 1.读模式 2.Hive架构 3.使用Hive的原因 Hadoop数据分析的问题: MapReduce实现复杂查询逻辑开发难度大,周期长 开发速度无法快速满足业务发展 使用Hive原因 类似SQL语法,使用灵活方便...

disuihuo0872的博客 308

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如何使错误日志更加方便排查问题

在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导。但是在实际中打的错误日志内容和格式变化多样,错误提示上可能残缺不全、没有相关背景、不明其义,使得排查解决问题成为非常不方便或者耗时的操作。而实际上,如果编程的时候稍加用心,就会减少排查问题的很多无用功。 在阐述如何编写有效的错误日志之前, 了解错误是怎么产生的, 非常重要。 ...

weixin_30701575的博客 868

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

某大型银行深化系统技术方案之七:核心层之流程控制引擎

传送门☞Android兵器谱☞转载请注明☞http://blog.youkuaiyun.com/leverage_1229 核心层 核心层主要提供后台业务集中处理中最基本、共性的信息处理、流程调度和相关的管理功能,如任务调度、路由确定、事务一致性管理、任务拆解合并、优先级管理等。核心层对业务处理中的各项工作进行高度的抽象,只管理共性的属性和操作,功能相对简单,具有较高稳定性和处理效率,并对外部服务...

xuela-net 383

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Log日志框架的学习.正确使用日志的10个技巧

1)选择正确的Log开源框架          在代码中为了知道程序的行为的状态, 我们一般会打印一条日志: log.info("Happy and carefree logging");           在所有的日志框架中, 我认为最好的是SLF4J. 比如在Log4J中我们会这样写: log.debug("Found " + records + " recor

feir23的博客 1万+

JAVA的日志体系

前言 日志接口 日志实现 commons-logging log4j slf4j slf4j-nop java.logging slf4j-simple Logback 目前的日志框架有 jdk 自带的 logging,log4j1、log4j2、logback ,这些框架都自己定制了日志 API ,并且有...

lss0555的博客 626

【Java深入学习系列】之那些年我们用过的日志框架

title: 【Java深入学习系列】三. 那些年我们用过的日志框架date: 2016-10-16 15:32:50 category: java 目前常见的Java日志框架和facades(中文似乎不太好翻译)有一下几种: ① log4j ② logback ③ SLF4J ④ commons-logging ⑤ j.u.l (即j...

weixin_34029680的博客 254

良好的日志记录规范

平常我的系统开发运行过程中,记录关键信息对于完善和修改提出了明确的建议。但是在现实的一些应用中的日志记录比较混乱,导致无法准确快速的定位问题发生的地方和问题发生的时候以及问题发生的场景。我就依据我平时使用log4j进行日志记录的一点心得与大家分享如何更加规范的记录日志信息,如果有不妥的问题请明示我好进行相应的改进,共同进步哈。 1.要记录什么类型日志 我们的系统开发常常会涉及到系统致命错误

Scalzdp的专栏 1万+

黑马程序员_12月22日

----------------------android培训、java培训、期待与您交流! ---------------------- 银行业务调度 1、对象抽象: 号码管理机(“生成”客户)-->单例 号码管理类 窗口 2、代码实现 public class NumberManager {  //每类客户一个号码管理 private int lastN

wjxjyl的专栏 861

业务知识——Logger日志打印规范

初期,我们的系统比较简单,在这个过程中,加上大家平时都不注意,所以Logger日志一直是打印的随心所欲,什么是随心所欲的,就是大家想在哪里打日志就在哪里打印日志,想输出什么就输出什么,毫无规范可言,在系统的流量和业务量变得越来越复杂的情况下,良好的日志才能帮助我们更快地找到问题,更好地解决问题。   首先来看一下比较常用的Logger日志级别(部分未列出): error - 运行期错误日志记...

一个想写小说的程序员 6883

如何保障银行日志安全合规审计

日志是整个银行 IT 信息系统中非常重要的信息和数据,它对信息安全整个过程中关键记录信息的监控统计,特别针对安全事故分析、追踪起到了关键性作用。随着网络规模的迅速扩大,加上各类应用系统逐步增多,运维人员工作量往往会成倍增加,使得关键信息得不到重点关注。大量事实表明,对于安全事件发生或关键数据遭到严重破坏之前完全可以预先通过日志异常行为告警方式通知管理人员,及时进行分析并采取相应措施进行有效阻止,从...

weixin_33943347的博客 737

日志信息添加原则

日志信息添加原则:(BootLog,WarningLog,FatalLog,DebugLog) BootLog用于记录服务器启动日志,包括客户端的一些重要操作(购买道具、提升等级、获得宠物等信息) WarningLog用于记录异常的信息,无重大错误(道具Id在配置表中查询不到——可能时配置表的问题) FatalLog用于记录完全不该出现的错误信息(Manager类中的m_pPlaye

little_stupid_child的专栏 1114
上一篇: Android血刀之CheckBox之问卷调查
下一篇: GoF23种设计模式之行为型模式之观察者模式
innovation
博客等级 码龄14年 251粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值