`
Franciswmf
  • 浏览: 800302 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

日志、java日志管理--logback、日志脱敏处理

 
阅读更多
引用参考:
【splunk】
--Splunk—云计算&大数据时代的超级日志分析和监控利器
https://blog.csdn.net/enweitech/article/details/51330610

【log4j】
--Log4j日志在java项目中的使用(附工程源码)
https://blog.csdn.net/wushiwude/article/details/54312319
--java web项目中加入log4j
https://blog.csdn.net/whh743/article/details/53584666
--log4j的使用与java中properties配置文件加载
https://blog.csdn.net/u013516035/article/details/41686627
--web.xml中配置log4jConfigLocation属性
https://www.oschina.net/question/920313_2144830
--Spring 中配置log4j日志功能
https://www.cnblogs.com/hapjin/p/5520547.html
--spring中的Log4jConfigListener作用
https://blog.csdn.net/north_easter/article/details/8965296
--log4j(三)——如何控制不同级别的日志信息的输出?
https://www.cnblogs.com/godtrue/p/6442398.html
--设置HttpClient不要打印巨多的日志
https://blog.csdn.net/RO_wsy/article/details/47019347
https://ask.csdn.net/questions/53751

日志前缀:
String logStr=this.getClass().getName()+"."+Thread.currentThread().getStackTrace()[1].getMethodName()+"...";
		logger.info(logStr+"调用get方法开始");

日志处理类
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
private static final Log logger = LogFactory.getLog(HomeController.class);
或
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
打印日志方式1:
import java.text.MessageFormat;
logger.info(MessageFormat.format(logStr+"token={0},url={1},servletPath={2}.",token,request.getRequestURI(),request.getServletPath()));

打印日志方式2:
logger.info(String.format("打印日志%s,%s", ss,dd));

打印日志方式3: slf4j
 logger.info("interface A001 token= {}", token);


【SLF4J与Logback简介】
--org.slf4j.Logger
-- 如何启用设置org.slf4j.Logger打印并输出日志
https://blog.csdn.net/qq_26115733/article/details/70560934
//
SLF4J——Simple Logging Facade For Java
它是一个针对于各类Java日志框架的统一Facade抽象。Java日志框架众多——常用的有java.util.logging,
log4j,
logback,
commons-logging,
Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定义了统一的日志抽象接口,而真正的日志实现则是在运行时决定的——它提供了各类日志框架的binding。
//
Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。
【日志脱敏处理】
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.ValueFilter;
/**
 * 字段脱敏处理
 *
 */
public class Demo {
	public static Logger logger = Logger.getLogger(Demo.class);
	private static ValueFilterExtend valueFilterExtend;
	static{
		//需要脱敏的参照规则
		String referenceJsonStr = "{\"4,4\":[\"bankCard\",\"idntityCard\"],\"3,5\":[\"mobile\"],\"4,0\":[\"email\"]}";
		Map<String, Map<String, Integer>> initReferenceMap = new HashMap<>();//初始化后的参照物map
		JSONObject jsonObject = JSON.parseObject(referenceJsonStr);
		String preffixSuffixStr = null;
		String[] preffixSuffixArray = null;//数组
		Map<String, Integer> tempReferenceMap = null;//参照物map
		//遍历参照物json对象
		for (Entry<String, Object> entry : jsonObject.entrySet()) {
			preffixSuffixStr = entry.getKey();
			preffixSuffixArray = preffixSuffixStr.split(",");
			tempReferenceMap = new HashMap<String, Integer>();
			tempReferenceMap.put("preffix", Integer.valueOf(preffixSuffixArray[0]));
			tempReferenceMap.put("suffix", Integer.valueOf(preffixSuffixArray[1]));
			for (Object v : (JSONArray)entry.getValue()){
				initReferenceMap.put(String.valueOf(v), tempReferenceMap);
			}
		}
		System.out.println("输出initReferenceMap.size()="+initReferenceMap.size());
		if(initReferenceMap.size() > 0){
			valueFilterExtend = new ValueFilterExtend(initReferenceMap);
		}
	}
	
	public static void main(String[] args) {
		JSONObject jsonObject=new JSONObject();
		jsonObject.put("bankCard", "32343413412341234234");
		jsonObject.put("mobile", "18799998888");
		//判断参照物是否存在
		Boolean bool=valueFilterExtend.isReferenceObjectMapEmpty();
		System.out.println("输出bool="+bool);
		if(bool){
			String str=JSON.toJSONString(jsonObject,valueFilterExtend);//特定属性脱敏处理
			System.out.println("输出str="+str);
		}
	}
	/**
	 * 
	 * 内部类ValueFilterExtend,实现了com.alibaba.fastjson.serializer.ValueFilter接口
	 */
	static class ValueFilterExtend implements ValueFilter {
		Map<String,Map<String, Integer>> referenceMap = new HashMap<>();
		public ValueFilterExtend() {
			
		}
		ValueFilterExtend(Map<String,Map<String, Integer>> referenceMap) {
			this.referenceMap = referenceMap;
		}
		/**
		 * 判断参照物map是否为空
		 * @return
		 */
		public boolean isReferenceObjectMapEmpty(){
			return referenceMap != null && referenceMap.size() != 0;
		}
		/**
		 * 重写ValueFilter接口方法process()
		 */
		@Override
		public Object process(Object targetObject, String name, Object value) {
			System.out.println("调用process方法...targetObject="+targetObject.toString());
			String val = String.valueOf(value);
			Map<String, Integer> map = referenceMap.get(name);
			return StringUtil.dealString(val, map.get("preffix"), map.get("suffix"), '*');//对字段的前几位和后几位进行脱敏处理
		}
	}
}


分享到:
评论

相关推荐

    springmvc log4j2 logback 注解 jackson 日志脱敏实现源码

    本资源包含的是关于`SpringMVC`、`Log4j2`、`Logback`以及`Jackson`的日志脱敏实现源码,提供了多种实现方式,旨在帮助开发者在保障信息安全的同时,充分利用日志进行系统分析。 1. **基于正则表达式的日志脱敏实现...

    Logback+Slf4j,基于SpringBoot实现日志脱敏.zip

    《基于SpringBoot的日志脱敏:Logback与Slf4j的实战应用》 在现代的软件开发中,日志系统是不可或缺的一部分,它为开发者提供了系统运行时的详细信息,帮助排查问题,优化性能。SpringBoot框架以其简洁的配置和强大...

    java 日志的数据脱敏的实现方法

    Java日志数据脱敏是为了确保在记录日志时,敏感信息不会被泄露,从而保护用户隐私和企业数据安全。在本文中,我们将探讨如何在Java应用程序中实现这一目标。 首先,理解数据脱敏的重要性至关重要。在处理包含敏感...

    logstash-logback-encoder:Logback JSON编码器和附加器

    最初是为了支持的JSON格式的输出而的,但现在已经演变为针对JSON和其他Jackson数据格式的高度可配置的通用结构化日志记录机制。 输出的结构及其包含的数据是完全可配置的。 内容: 将其包含在您的项目中 Maven风格...

    java分布式日志系统.zip

    3. **Java日志框架** - Log4j:经典日志框架,提供了灵活的日志配置和多种Appender(如文件、数据库等)。 - Logback:由Log4j作者设计的新一代日志框架,性能优于Log4j。 - SLF4J(Simple Logging Facade for ...

    java日志解决方案java问题解决日志第一版.pdf

    Java日志解决方案是Java开发中不可或缺的一部分,它用于记录应用程序的运行情况,帮助开发者调试代码,定位错误,以及在生产环境中监控系统状态。本篇主要介绍一些基础的日志概念、常用的Java日志框架以及如何有效地...

    日志处理jar包

    本压缩包文件提供的是日志处理相关的jar包,包括log4j和slf4j两个流行的Java日志框架。下面将详细介绍这两个框架以及它们在实际应用中的作用。 1. **Log4j**: Log4j是Apache软件基金会的一个开源项目,它为Java...

    java种菜源码-Extended-Logging:扩展的非侵入式跟踪日志记录

    可以使用日志脱敏技术来保护用户隐私和企业安全。 总的来说,"java种菜源码-Extended-Logging"是一个关于如何实现和使用高级日志记录解决方案的项目,它涵盖了非侵入式设计、日志框架扩展、开源协作等多个方面,...

    资料-Java日志.zip

    Java日志是软件开发中不可或缺的一部分,特别是在大型分布式系统中,日志对于问题排查、性能监控和系统审计具有重要作用。本资料"Java日志.zip"包含的资源旨在帮助开发者理解和应用Java日志机制,其中可能涵盖了日志...

    j2ee的aop方式记录日志

    SSH(Struts + Spring + Hibernate)是一个经典的Java Web开发框架,而AOP(面向切面编程)是Spring框架的一个核心特性,常用于处理系统中的横切关注点,如日志、事务管理等。本教程将详细讲解如何在SSH框架中利用...

    log日志的实现

    1. **Struts日志实现**:在Struts框架中,通常使用Log4j或SLF4J(Simple Logging Facade for Java)来处理日志。Log4j是早期流行的日志库,提供了丰富的配置选项和输出格式。SLF4J则是一个抽象层,允许用户在运行时...

    服务应用中 不同日志管理和记录

    1. **日志框架选择**:多种日志框架如Java的Log4j、Logback,Python的logging,Node.js的winston等,提供了灵活的日志配置和输出方式。选择合适的日志框架要考虑性能、易用性、社区支持等因素。 2. **日志格式**:...

    3+日志规范.doc

    SLF4J(Simple Logging Facade for Java)是Java平台上的一个日志抽象层,允许最终用户在部署时插入所需的日志框架。本篇将详细介绍3日志规范,以帮助开发者建立高效、可维护的日志系统。 1. **日志级别** - **...

    boot项目审计日志功能ideal源码

    Spring Boot作为流行的Java微服务框架,结合MySQL数据库,可以构建出高效的审计日志功能。本篇将深入探讨"boot项目审计日志功能ideal源码",并解析其中的关键技术和实现方式。 首先,审计日志的主要目的是记录系统...

    增强Web服务器日志功能.rar_web日志

    Java作为一种广泛使用的后端开发语言,提供了丰富的库和框架来处理日志,例如Log4j、SLF4J、Logback等。这些日志框架不仅支持基本的日志记录,还可以进行日志级别控制、日志格式定制、日志输出位置设置等,从而实现...

    日志记录,备份,防止找不到了

    在Java中,常见的日志框架有Log4j、Logback、SLF4J(Simple Logging Facade for Java)等。这些框架提供了丰富的功能,如日志级别管理、输出格式定制、日志切割、异步日志处理等。例如,Log4j是Apache的一个项目,...

    mybatis日志sql自动填充及补全

    MyBatis支持多种日志实现,如Log4j、Logback和Java内置的日志API。在配置文件中,设置相应的日志实现,并调整日志级别至DEBUG或更高级别,这样就能看到SQL语句和参数信息。 2. **解析日志**:日志信息中包含了SQL...

    slf4j+log4j2配置使用

    Log4j2是Log4j的升级版,提供了更加灵活和强大的日志处理能力,包括异步日志、延迟加载、日志脱敏等功能。接下来,将详细介绍SLF4J和Log4j2的配置使用。 ### SLF4J与Log4j2的配合使用 在Spring Boot项目中,可以...

    log4j所需jar

    Log4j是Apache组织开发的一款广泛使用的Java日志框架,它为Java应用程序提供了一种灵活且强大的日志记录机制。这个压缩包文件“log4j”很可能包含了Log4j库的核心组件,使得开发者能够在他们的应用中集成日志功能。...

    log 的简单写法。。共享。。

    6. **日志封装库**:许多编程语言提供了日志处理的库,如Python的`logging`模块,Java的`java.util.logging`或`logback`,JavaScript的`winston`等。这些库简化了日志的编写和管理,支持自定义日志格式、级别和输出...

Global site tag (gtag.js) - Google Analytics