package com.zzq.logging;
/**
* 公共日志模型接口
* @author zzq
*
*/
public interface Log {
public void warn(String msg);
public void error(String msg);
public void error(String msg, Throwable t);
public void debug(String msg);
public void info(String msg);
public boolean isDebugEnabled();
}
package com.zzq.logging;
import java.lang.reflect.Constructor;
public class LogFactory {
private static Constructor currentLogConstructor;
static {
registerLog("org.apache.commons.logging.LogFactory", "com.zzq.logging.jakarta.JakartaCommonsLoggingImpl");
registerLog("org.apache.log4j.Logger", "com.zzq.logging.log4j.Log4jImpl");
registerLog("java.util.logging.Logger", "com.zzq.logging.jdk14.JDK14LoggerImpl");
registerLog("java.lang.Object", "com.zzq.logging.mylog.MyLogImpl");
}
protected static void registerLog(String interfaceClass, String implClass) {
if(null == currentLogConstructor) {
try {
Class.forName(interfaceClass);
currentLogConstructor = Class.forName(implClass).getConstructor(new Class[] {Class.class});
} catch (Throwable e) {
}
}
}
public static Log getLog(Class clazz) {
try {
return (Log)currentLogConstructor.newInstance(new Object[] {clazz});
} catch (Throwable e) {
throw new RuntimeException("创建Log实例时失败!", e);
}
}
}
package com.zzq.logging.jakarta;
import org.apache.commons.logging.LogFactory;
import com.zzq.logging.Log;
/**
* Commons-Logging实现
* @author zzq
*
*/
public class JakartaCommonsLoggingImpl implements Log {
private org.apache.commons.logging.Log log;
public JakartaCommonsLoggingImpl(Class clazz) {
log = LogFactory.getLog(clazz);
}
public void debug(String msg) {
log.debug(msg);
}
public void error(String msg) {
log.error(msg);
}
public void error(String msg, Throwable t) {
log.error(msg, t);
}
public void info(String msg) {
log.info(msg);
}
public boolean isDebugEnabled() {
return log.isDebugEnabled();
}
public void warn(String msg) {
log.warn(msg);
}
}
import java.util.logging.Level;
import java.util.logging.Logger;
import com.zzq.logging.Log;
/**
* JDK1.4 Logger实现
* @author zzq
*
*/
public class JDK14LoggerImpl implements Log {
private Logger log;
public JDK14LoggerImpl(Class clazz) {
log = Logger.getLogger(clazz.getName());
}
public void debug(String msg) {
log.log(Level.FINE, msg);
}
public void error(String msg) {
log.log(Level.SEVERE, msg);
}
public void error(String msg, Throwable t) {
log.log(Level.SEVERE, msg, t);
}
public void info(String msg) {
log.log(Level.INFO, msg);
}
public boolean isDebugEnabled() {
return log.isLoggable(Level.FINE);
}
public void warn(String msg) {
log.log(Level.WARNING, msg);
}
}
import org.apache.log4j.Logger;
import com.zzq.logging.Log;
/**
* Log4j实现
* @author zzq
*
*/
public class Log4jImpl implements Log {
private Logger log;
public Log4jImpl(Class clazz) {
log = Logger.getLogger(clazz);
}
public void debug(String msg) {
log.debug(msg);
}
public void error(String msg) {
log.error(msg);
}
public void error(String msg, Throwable t) {
log.error(msg, t);
}
public void info(String msg) {
log.info(msg);
}
public boolean isDebugEnabled() {
return log.isDebugEnabled();
}
public void warn(String msg) {
log.warn(msg);
}
}
package com.zzq.logging.mylog;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zzq.logging.Log;
/**
* 没有Commons-logger、log4j并且JDK版本在1.4一下会使用此类
* @author zzq
*
*/
public class MyLogImpl implements Log {
private Class clazz;
private SimpleDateFormat sdf;
public MyLogImpl(Class clazz) {
this.clazz = clazz;
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
public void debug(String msg) {
System.out.println("Debug=[" + sdf.format(new Date()) + "]" + msg + " : " + clazz.getName());
}
public void error(String msg) {
System.out.println("Error=[" + sdf.format(new Date()) + "]" + msg + " : " + clazz.getName());
}
public void error(String msg, Throwable t) {
System.out.println("Error=[" + sdf.format(new Date()) + "]" + msg + " : " + clazz.getName());
t.printStackTrace();
}
public void info(String msg) {
System.out.println("Info=[" + sdf.format(new Date()) + "]" + msg + " : " + clazz.getName());
}
public boolean isDebugEnabled() {
return false;
}
public void warn(String msg) {
System.out.println("Warn=[" + sdf.format(new Date()) + "]" + msg + " : " + clazz.getName());
}
}
分享到:
相关推荐
为了应对这些挑战,基于知识图谱的网络安全等级保护日志审计分析模型应运而生。 知识图谱是一种可用于表达实体、概念及其相互关系的图形化结构,它能够将结构化数据和非结构化数据有机地结合起来,通过图模型的方式...
【Web日志数据挖掘模型研究】是针对海量的Web日志数据进行分析和挖掘的科研领域,旨在通过解析用户访问模式来提升服务质量。在信息爆炸的时代,了解用户需求成为企业竞争的关键,而Web日志正是获取用户行为的重要...
PatchmatchNet多次训练好的模型 和 训练日志 checkpoints PatchmatchNet多次训练好的模型 和 训练日志 checkpoints PatchmatchNet多次训练好的模型 和 训练日志 checkpoints PatchmatchNet多次训练好的模型 和 训练...
### 基于Web日志挖掘的Markov预测模型及算法研究 #### 一、引言 随着互联网技术的快速发展,特别是Internet的普及,数据挖掘技术的应用范围已经从传统数据库扩展到了网络数据,由此产生了Web挖掘这一新兴的研究...
本文提出一种新的日志模型,可以防止日志被删除改动,保证取证日志的安全性
首先,Muduo日志的实现基于C++的IO流(I/O Stream)机制,IO流是C++标准库提供的一种数据输入输出模型,它允许开发者通过类似于操作字符串的方式处理各种数据源。在Muduo中,我们可以像使用`std::cout`一样方便地...
在日志处理中,定义一个日志模型可以帮助规范化日志格式,便于后续的分析和处理。模型通常包含时间戳、日志级别、日志消息、发生事件的源等关键字段。 总结,"日志(一)"可能涵盖了日志的基本概念、日志框架的选择...
《Web日志数据挖掘模型研究》是一篇由冯凌、林杰和雷星晖共同撰写的文章,发表在2005年的《计算机集成制造系统》期刊上。文章主要探讨了如何利用数据挖掘技术来深入分析Web日志,以揭示用户的行为模式和偏好,从而为...
在本存储库中,我们关注的是使用MATLAB(矩阵实验室)来实现两种特定的信号传播损失模型:日志距离路径损失(Log-Distance Path Loss)模型和日志正常阴影路径损失(Log-Normal Shadowing Path Loss)模型。...
综上所述,"基于LSTM神经网络模型的日志异常检测"项目通过利用LSTM的强大学习能力,对日志数据进行深入分析,从而实现高效、准确的异常检测。这一技术的应用对于维护系统的健康运行和提高运维效率具有重要意义。
在本项目中,AIOps被应用于异常日志检测,目标是通过智能方法来识别和预测系统或应用可能出现的问题,从而减少故障时间和提高运维效率。 异常检测是该项目的核心部分,它旨在识别数据流中的离群值或不寻常模式。...
基于yolov8实现火焰检测火灾检测明火检测源码+模型+训练日志+项目说明.zip基于yolov8实现火焰检测火灾检测明火检测源码+模型+训练日志+项目说明.zip基于yolov8实现火焰检测火灾检测明火检测源码+模型+训练日志+项目...
在SQL Server 2008中,清理日志文件通常需要将数据库设置为简单恢复模型。这是因为简单模式允许在不备份日志的情况下截断日志,而完整和大容量日志模式则要求在截断日志之前先进行日志备份。以下是清理SQL Server ...
在Sql Server中,有三种不同的恢复模型:简单恢复模型、完整恢复模型和大容量日志恢复模型。每种模型对日志的处理方式不同,决定了何时以及如何清除日志。 - **简单恢复模型**:允许快速清除日志,但只能恢复到最近...
而`Test`可能是你的项目源代码文件夹,可能包含了项目的类库、视图模型、UI控件等。 总之,理解并熟练运用C#和log4net进行日志管理,能够帮助开发者更好地跟踪应用程序的状态,及时发现并解决问题。结合WPF的UI设计...
在机器学习领域,模型训练过程中记录的log日志文件是非常重要的,它包含了训练过程中的关键信息,如损失(loss)和准确率(accuracy)等。在本案例中,我们关注的是如何利用Python从SSD(Single Shot MultiBox Detector...
快速清除SQLServer日志的两种方法 本文将详细介绍快速清除SQLServer日志的两种方法,包括清空日志和删除LOG文件,并且对每种方法进行了详细的解释和操作步骤。 清空日志 清空日志是快速清除SQLServer日志的第一种...
"ChatGLM-6B-dev"这个文件可能是ChatGLM模型的开发版本,可能包含了模型的权重文件、训练日志、评估脚本等,供研究者和开发者用于模型的进一步调优和实验。利用这些资源,开发者可以对模型进行微调,使其更适合特定...
本项目利用LSTM(Long Short-Term Memory)神经网络模型,这是一种特殊的循环神经网络(RNN),特别适合处理序列数据,如时间序列或者文本数据,例如日志信息。LSTM网络能够在处理长序列时避免梯度消失和梯度爆炸的...