logYF.java

简介: logYF.java

compile('log4j:log4j:1.2.17')

 

logYF.java

package com.demo.test;
import org.apache.log4j.Logger;
public class logYF {
    private static Logger logger = Logger.getLogger(logYF.class);
    public static void info(Object log){
        logger.info(appendLogStr(log));
    }
    public static void error(Object log){
        logger.error(appendLogStr(log));
    }
    public static void debug(Object log){
        logger.debug(appendLogStr(log));
    }
    private static String appendLogStr(Object str) {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        StackTraceElement log = stackTrace[1];
        StringBuffer  tag = new StringBuffer();
        tag.append("[");
        for (int i = 1; i < stackTrace.length; i++) {
            StackTraceElement e = stackTrace[i];
            if (!e.getClassName().equals(log.getClassName())) {
                tag.append(e.getClassName()).append(".").append(e.getMethodName()).append("-").append(e.getLineNumber());
                break;
            }
        }
        tag.append("] ").append(str.toString());
        return tag.toString();
    }
}

log4j.properties

### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss} %m%n
### 输出DEBUG 级别以上的日志到=log.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = C://Data/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss} %m%n
### 输出ERROR 级别以上的日志到=error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =C://Data/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss} %m%n

输出结果示例:

[INFO] 2019-06-14 17:28:57 [com.demo.test.TestLog.main-7] aaaaaaaaaaaaaaa
[INFO] 2019-06-14 17:28:57 [com.demo.test.TestLog.TestSSS-13] aaaaaaaaaaaaaaa
[ERROR] 2019-06-14 17:28:57 [com.demo.test.TestLog.TestSSS-14] ssssss
[DEBUG] 2019-06-14 17:28:57 [com.demo.test.TestLog.TestSSS-15] debug
相关文章
|
存储 Prometheus 运维
[10.14 workshop] 自定义 Prometheus 监控指标并通过 Grafana 展示
阿里云Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。借助阿里云Prometheus监控,您无需自行搭建Prometheus监控系统,因而无需关心底层数据存储、数据展示、系统运维等问题。
[10.14 workshop] 自定义 Prometheus 监控指标并通过 Grafana 展示
|
7月前
|
设计模式 Java API
05.接口隔离原则介绍
接口隔离原则(ISP)是SOLID原则之一,强调客户端不应依赖于它们不需要的接口。通过将庞大而臃肿的接口拆分为更小、更具体的接口,确保每个接口只包含客户端真正需要的方法,从而提高代码的可维护性和灵活性。本文详细介绍了接口隔离原则的概念、核心思想、实现方式及案例分析,并对比了其与单一职责原则的区别。关键点包括:接口应精简、独立且可扩展,避免强迫实现不必要的方法,减少系统的耦合性。
295 19
|
11月前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
第三章:什么是 BACnet/IP 网络
BACnet/IP 网络是一个或多个 IP 子网(IP 域)的集合,这些子网分配有单个 BACnet 网络号。BACnet 互联网络由两个或多个 BACnet 网络组成。这些网络可能是 BACnet/IP 网络,也可能使用其他指定的技术。此标准还支持以类似于 IP 子网的方式包含 IP 多播组,如下文中所述。
690 0
第三章:什么是 BACnet/IP 网络
|
12月前
|
监控 网络协议 安全
|
JSON Shell API
阿里云PAI-Stable Diffusion开源代码浅析之(一)所有api的入参如何看
阿里云PAI-Stable Diffusion开源代码浅析之所有api的入参如何看
|
移动开发 JSON JavaScript
盘点12个 yyds 的低代码开源项目
盘点12个 yyds 的低代码开源项目
1934 0
|
编解码 测试技术 开发工具
Python+Appium自动化测试(15)-使用Android模拟器(详细)(一)
做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景。但前期调试脚本的话,可以先使用模拟器,这样相对更加方便。 不推荐使用Android SDK里自带模拟器,太卡。 这里介绍两款我正在用于做自动化测试的模拟器:Genymotion 与 夜神模拟器。
Python+Appium自动化测试(15)-使用Android模拟器(详细)(一)
|
Go
go语言map[string]string 转map[string]interface{}
go语言map[string]string 转map[string]interface{}
840 0
|
资源调度 分布式计算 Cloud Native
Schedulerx2.0支持可抢占的任务优先级队列
1. 前言 Schedulerx2.0是一套分布式的任务调度+计算框架。作为一套分布式计算引擎,用户经常需要资源管理的需求,当前schedulerx仅仅支持单个任务实例的管控(比如单机子任务并发数、拉模型全局子任务并发数等),这一点是远远不够的。
3753 0
Schedulerx2.0支持可抢占的任务优先级队列