日志级别记录规范

之前看了网上发的日志级别的使用规范和「日志管理与分析权威指南」里面的日志级别规范和说明,具体内容如下。

JAVA Log4j的8个日志级别

log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。

「ALL」: 最低等级的,用于打开所有日志记录。

「TRACE」 : designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用。

「DEBUG」:  指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。

「INFO」: 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。

「WARN」: 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。

「ERROR」: 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。

「FATAL」: 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。

「OFF」:  最高等级的,用于关闭所有日志记录。

如果将log level设置在某一个级别上,那么比此级别优先级高的log都能打印出来。例如,如果设置优先级为WARN,那么OFF、FATAL、ERROR、WARN4个级别的log能正常输出,而INFO、DEBUG、TRACE、 ALL级别的log则会被忽略。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

致命错误「FATAL」

表示需要立即被处理的系统级错误。当该错误发生时,表示服务已经出现了某种程度的不可用,系统管理员需要立即介入。

这属于最严重的日志级别,因此该日志级别必须慎用,如果这种级别的日志经常出现,则该日志也失去了意义。

通常情况下,一个进程的生命周期中应该只记录一次FATAL级别的日志,即该进程遇到无法恢复的错误而退出时。

当然,如果某个系统的子系统遇到了不可恢复的错误,那该子系统的调用方也可以记入FATAL级别日志,以便通过日志报警提醒系统管理员修复。

错误 「ERROR」

错误日志是用来传递系统或应用程序中出现的各种级别的错误。例如,操作系统在无法同步缓存区到磁盘的时候会生成错误信息。不确定的是,许多错误信息只能给出为什么出错的起点,要寻找出导致错误发生的根本原因还需要进一步分析。

该级别的错误也需要马上被处理,但是紧急程度要低于FATAL级别。当ERROR错误发生时,已经影响了用户的正常访问。从该意义上来说,实际上ERROR错误和FATAL错误对用户的影响是相当的。

FATAL相当于服务已经挂了,而ERROR相当于好死不如赖活着,然而活着却无法提供正常的服务,只能不断地打印ERROR日志。

特别需要注意的是,ERRORFATAL都属于服务器自己的异常,是需要马上得到人工介入并处理的情况。而对于用户自己操作不当,如请求参数错误等等,是绝对不应该记为ERROR日志的。

警告 「WARN」

警告信息是在系统即将丢失东西,而又不影响系统运行下而产生的,例如一个应用程序在没有获得正确数量的参数传递的时候,但是它又能够在没有这些参数的情况下正常运行,这种情况下可能就是记录警告信息提示使用者或者管理员。

该日志表示系统可能出现问题,也可能没有问题,这种情况在例如网络的波动等情况。对于那些目前还不是错误,然而不及时处理也会变为错误的情况,也可以记为WARN日志,例如一个存储系统的磁盘使用量超过阀值,或者系统中某个用户的存储配额快用完等等。

对于WARN级别的日志,虽然不需要系统管理员马上处理,也是需要即时查看并处理的。因此此种级别的日志也不应太多,能不打WARN级别的日志,就尽量不要打。

信息 「INFO」

这种类型的信息被设计成告诉用户或者开发者一些没有风险的事情发生了。该种日志记录系统正常运行状态,例如某个子系统的初始化,某个请求的成功执行等等。

通过查看INFO级别的日志,可以很快地对系统中出现的WARN,ERROR,FATAL错误进行定位。INFO日志不宜过多,通常情况下,INFO级别的日志应该不大于TRACE日志的10%。

调试 DEBUG or TRACE

软件系统在应用程序代码运行时生成的调式信息,是为了给软件开发人员提供故障检测和定位问题的帮助。

这两种日志具体的规范应该由项目组自己定义,该级别日志的主要作用是对系统每一步的运行状态进行精确的记录。

通过该种日志,可以查看某一个操作每一步的执行过程,可以准确定位是何种操作,何种参数,何种顺序导致了某种错误的发生。可以保证在不重现错误的情况下,也可以通过DEBUG(或TRACE)级别的日志对问题进行诊断。

需要注意的是,DEBUG日志也需要规范日志格式,应该保证除了记录日志的开发人员自己外,其他的如运维,测试人员等也可以通过DEBUG(或TRACE)日志来定位问题。

Python日志级别参考: http://suo.im/6fvfZa  http://suo.im/6ut404

Linux系统日志级别参考: http://suo.im/60sStE

### 使用MATLAB实现LIDC-IDRI数据集肺结节的分类 为了在MATLAB中实现LIDC-IDRI数据集肺结节的有效分类,可以采用多种策略和技术。这里介绍一种基于特征提取和机器学习模型的方法。 #### 数据预处理 首先加载并准备用于训练的数据集。由于提到的数据已经预先裁剪为64×64像素大小[^2],这一步骤相对简单: ```matlab % 加载图像文件夹路径下的所有png格式图片作为输入样本 imageFolder = 'path_to_your_prepared_dataset'; imds = imageDatastore(imageFolder, ... 'IncludeSubfolders', true, ... 'LabelSource', 'foldernames'); ``` 接着划分训练集与测试集以便后续评估性能: ```matlab [trainImages,testImages] = splitEachLabel(imds,0.8,'randomized'); % 80%-20%比例随机分配给训练组和验证组 ``` #### 特征工程 对于每张CT扫描切片图,计算一组描述其纹理特性的统计量或其他形态学指标来表征潜在病灶区域。常用的技术包括但不限于灰度共生矩阵(GLCM),局部二值模式(LBP)以及Hu矩等。 ```matlab function features = extractFeatures(img) glcm = graycomatrix(rgb2gray(img),... 'Offset',[0 1; -1 1; -1 0; -1 -1]); stats = graycoprops(glcm); % 提取更多类型的特征向量可提高识别精度 features = [ mean([stats.Contrast]), mean([stats.Correlation]), mean([stats.Energy ]), mean([stats.Homogeneity]) ]; end ``` 上述函数`extractFeatures()`定义了一个简单的GLCM特性抽取过程[^1]。 #### 构建分类器 利用支持向量机(SVM)或者其他合适的监督式算法构建预测模型。在此之前需先获取标签信息并与对应的影像特征关联起来形成完整的训练样本集合。 ```matlab % 假设已知正负类别标记存储于cell数组labels中 positiveIdx = cellfun(@(x) strcmp(x,'Positive'), labels); negativeIdx = ~positiveIdx; posFeats = arrayfun(@extractFeatures, trainImages.Files(positiveIdx)', 'UniformOutput', false); negFeats = arrayfun(@extractFeatures, trainImages.Files(negativeIdx)', 'UniformOutput', false); trainData = cat(1,posFeats{:}, negFeats{:}); classLabels = [ones(length(posFeats),1); zeros(length(negFeats),1)]; SVMModel = fitcsvm(trainData,classLabels,... 'KernelFunction','linear',... 'Standardize',true); ``` 这段代码片段展示了如何创建线性核的支持向量机,并通过标准化后的特征来进行拟合操作[^3]。 最后,在独立的测试子集上应用所得到的最佳参数配置完成最终评价工作。 ```matlab testFeats = cellfun(@extractFeatures, testImages.ReadFcn(testImages.Files)', 'UniformOutput',false); predictedScores = predict(SVMModel,[testFeats{:}]); confusionchart(double(strcmp(labels{testImages.Labels},'Positive')), predictedScores>0.5); ``` 此部分实现了对新实例进行打分并将结果可视化展示出来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值