`
grape927
  • 浏览: 75655 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

logging日志(二) 扩展Handler

    博客分类:
  • JAVA
 
阅读更多

 

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;

public class TestHandler extends Handler {
	public TestHandler (){
		configure();
	}
	
	@Override
	public void close() throws SecurityException {
	}

	@Override
	public void flush() {
	}
	
	@Override
	public void publish(LogRecord record) {
		if (!isLoggable(record)) {
			return;
		}
		record.setMessage(getUserInfo(record.getMessage()));
		
		getFormatter().format(record);
		getUserInfo(record.getMessage());
	}
	
	 private void configure() {
		LogManager manager = LogManager.getLogManager();
		String cname = getClass().getName();
		Level lovel = getLevelProperty(manager, cname + ".level", Level.ALL);
		if (null != lovel) {
			setLevel(lovel);
		} 
		
		UploadFormatter formatter = (UploadFormatter) getFormatterProperty(manager, cname + ".formatter",  new UploadFormatter());
		if (null != formatter) {
			setFormatter(formatter);
		}
	}
	 
    private Level getLevelProperty(LogManager manager, String name, Level defaultValue) {
    	String val = manager.getProperty(name);
    	if (val == null) {
    	    return defaultValue;
    	}
    	try {
    	    return Level.parse(val.trim());
    	} catch (Exception ex) {
    	    return defaultValue;
    	}
    }  
    
    Formatter getFormatterProperty(LogManager manager, String name, Formatter defaultValue) {
		String val = manager.getProperty(name);
		try {
			if (val != null) {
				Class clz = ClassLoader.getSystemClassLoader().loadClass(val);
				return (Formatter) clz.newInstance();
			}
		} catch (Exception ex) {
			// We got one of a variety of exceptions in creating the
			// class or creating an instance.
			// Drop through.
		}
		// We got an exception. Return the defaultValue.
		return defaultValue;
	}
    
	static InetAddress addr = null;
	static {
		try {
			addr = InetAddress.getLocalHost();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
	}

	public String getUserInfo(String expmsg) {
		String username = Conf.getInstance().getProperty("username");
		String datetime = getCurrentDateTime();
		String localIP = getLocalIP();
		if (null == username || null == localIP) {
			return "";
		}
		StringBuffer sb = new StringBuffer();
		sb.append("{");
		sb.append("username:").append(username);
		sb.append(",datetime:").append(datetime);
		sb.append(",localIP:").append(localIP);
		sb.append(",expmsg:").append(expmsg);
		sb.append("}");
		return sb.toString();
	}

	public String getLocalIP() {
		byte[] ipAddr = addr.getAddress();
		String ipAddrStr = "";
		for (int i = 0; i < ipAddr.length; i++) {
			if (i > 0) {
				ipAddrStr += ".";
			}
			ipAddrStr += ipAddr[i] & 0xFF;
		}
		return ipAddrStr;
	}

	public String getCurrentDateTime() {
		String dateformat = "yyyy-MM-dd HH:mm:ss";
		Date date = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);
		String strDateFolder = dateFormat.format(date);
		return strDateFolder;

	}

  

分享到:
评论

相关推荐

    Python库 | timefile-logging-handler-1.0.0.tar.gz

    总的来说,"timefile-logging-handler"是Python开发中一个用于日志管理的库,它扩展了标准logging模块的功能,特别是对基于时间的日志处理提供了更细粒度的控制。对于那些需要高效、有序地管理和存储大量日志数据的...

    对JDK log日志的扩展

    这可以通过继承`java.util.logging.Handler`类并覆盖其关键方法来实现,如`publish()`用于处理日志记录,`close()`用于关闭处理器,以及`flush()`用于确保所有缓冲的消息被写入。这样可以将日志输出到文件、数据库或...

    Python logging日志模块 配置文件方式

    Python的logging模块是标准库中用于日志记录的重要工具,尤其在微服务和Web服务中,日志功能不可或缺,用于追踪用户活动、程序错误和性能分析。本文将深入讲解如何通过配置文件的方式来设置logging模块。 首先,...

    python日志输出----logging浅析与使用.pdf

    无论是简单的命令行应用程序还是复杂的企业级系统,合理利用`logging`模块都能显著提高项目的可维护性和扩展性。希望本文能为你提供一个关于如何使用`logging`模块的基础指南,并激发你在实践中探索更多高级特性的...

    Python中内置的日志模块logging用法详解

    Python的内置日志模块`logging`是一个强大的工具,用于跟踪和记录程序的运行状态,它提供了灵活的日志记录策略,可以适应多种应用场景。这个模块的设计灵感来源于Apache的log4j,但具体实现有所不同。 首先,`...

    java logging

    9. **日志的可扩展性**:Java Logging API设计为模块化,方便添加新的Handler和Filter,以适应不同场景的需求。 在“logging-1.1.1”这个压缩包中,可能包含了这个特定版本的API库、文档、示例代码和其他相关资源,...

    python logging日志模块的详解

    【Python Logging日志模块详解】 Python的标准库提供了一个强大的日志模块——`logging`,它允许开发者记录应用程序的运行情况,方便后期分析和调试。本文将深入探讨`logging`模块的使用方法,包括日志级别、日志...

    Python-Logbook一个很酷的logging库用来替换Python内置logging库

    6. **丰富的通知机制**:除了标准的日志记录,Logbook还可以通过电子邮件、Webhook或其他外部服务发送通知,增强了系统的可扩展性。 7. **更好的性能**:Logbook在设计时就考虑了性能优化,相比`logging`模块,它在...

    Python库 | python-logging-loki-0.2.0.tar.gz

    5. 记录日志:现在,你可以像使用标准logging模块一样记录日志,LokiHandler会负责将这些日志发送到Loki。 这个库对于那些希望在Python应用中利用Loki的强大功能的开发者来说,是一个非常有价值的工具。它简化了...

    Python基于yaml文件配置logging日志过程解析

    在Python编程中,日志记录是一项重要的功能,用于追踪程序运行...它允许我们集中管理日志格式、处理器和记录器设置,使代码更清晰,易于扩展和调试。通过这种方式,开发者可以在复杂项目中更好地管理和监控日志信息。

    Python库 | el_logging-0.2.18.tar.gz

    `el_logging` 库可能提供了对Python内置`logging`模块的扩展或优化,以满足更具体的需求。 Python内置的`logging`模块是一个强大的日志系统,允许开发者自定义日志级别(如DEBUG、INFO、WARNING、ERROR、CRITICAL)...

    python3 配置logging日志类的操作

    `Log_Test`类扩展了`config_file`,并引入了一个`logging`方法,这个方法用于创建和配置日志器。首先,它从配置文件中读取日志器的名称和级别。然后,它创建一个`logging.Formatter`对象来定义日志的输出格式。根据...

    PyPI 官网下载 | logging-py-0.3.11.tar.gz

    通常,一个扩展库可能会包含如彩色输出、多进程/线程安全、异步日志处理等功能。 为了使用这个库,首先需要解压下载的tar.gz文件,然后通过`setup.py`安装: ```bash tar -zxvf logging-py-0.3.11.tar.gz cd ...

    Python-lvsoftenhancedlogging一个增强版的python日志模块

    总之,`Python-lvsoft-enhancedlogging`是一个强大且灵活的日志库,通过扩展Python的`logging`模块,提供了更多功能和更好的用户体验,适合于需要进行复杂日志管理的项目。正确配置和使用这个库,能够极大地提高开发...

    jboss-logging-3.3.0.Final.jar的源码

    总结起来,`jboss-logging-3.3.0.Final.jar`源码展示了如何通过优雅的设计实现一个高效、可扩展的日志框架。通过深入理解这些源码,开发者不仅可以更好地利用该框架,还能学习到如何构建类似的模块化和适配性良好的...

    Python库 | logging-config-1.0.3.tar.gz

    `logging-config-1.0.3.tar.gz`是一个包含特定配置的`logging`库版本,可能是为了简化或优化日志管理而提供的第三方扩展。 首先,我们来了解一下`logging`模块的基本用法。在Python中,`logging`模块提供了创建...

    python实现一个简单的日志系统

    `logging`模块提供了丰富的API和扩展选项,如`RotatingFileHandler`用于文件大小限制时的自动滚动,`SocketHandler`用于通过网络发送日志等。 总的来说,使用Python的`logging`模块可以轻松地创建一个符合需求的...

    Python库 | mylogging-1.1.0.tar.gz

    无论是小型脚本还是大型项目,mylogging都能提供合适且可扩展的日志管理策略,帮助开发者实现高效、清晰的日志记录。在实际开发中,合理利用mylogging库,可以显著提高代码的可维护性和调试效率。

    Python库 | logzio_python_handler-2.0.4-py2.py3-none-any.whl

    `logzio_python_handler` 扩展了这个功能,为日志添加了一个新的处理器,这个处理器能够将这些日志消息发送到Logz.io的接收器。这样,开发者可以在不改变原有日志处理逻辑的情况下,轻松实现日志的远程传输。 **...

    Laravel开发-laravel-error-handler

    Laravel 支持多种日志驱动(如文件、邮件、数据库等),`laravel-error-handler`可能提供了扩展这些驱动的功能,使开发者能更好地管理和分析错误日志。你可以通过配置`config/logging.php`文件来选择合适的日志策略...

Global site tag (gtag.js) - Google Analytics