Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'f k="pin">(.*?)</f','f k="pin">**********</f'}%n</pattern>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'pin=(.*?),','pin=**********,'}%n</pattern>
- @Component("maskingPatternLayout")
- public class MaskingPatternLayout extends PatternLayout {
- @Autowired
- private Environment env;
- @Override
- public String doLayout(ILoggingEvent event) {
- String message=super.doLayout(event);
- String patternsProperty = env.getProperty("bowdleriser.patterns");
- if( patternsProperty != null ) {
- String[] patterns = patternsProperty.split("|");
- for (int i = 0; i < patterns.length; i++ ) {
- Pattern pattern = Pattern.compile(patterns[i]);
- Matcher matcher = pattern.matcher(event.getMessage());
- matcher.replaceAll("*");
- }
- } else {
- System.out.println("Bowdleriser not cleaning! Naughty strings are getting through!");
- }
- return message;
- }
- }
- <configuration>
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <layout class="com.touchcorp.touchpoint.utils.MaskingPatternLayout">
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
- </layout>
- </encoder>
- </appender>
- <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>logs/touchpoint.log</file>
- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
- <fileNamePattern>logs/touchpoint.%i.log.zip</fileNamePattern>
- <minIndex>1</minIndex>
- <maxIndex>3</maxIndex>
- </rollingPolicy>
- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
- <maxFileSize>10MB</maxFileSize>
- </triggeringPolicy>
- <encoder>
- <layout class="com.touchcorp.touchpoint.utils.MaskingPatternLayout">
- <pattern>%date{YYYY-MM-dd HH:mm:ss} %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
- </layout>
- </encoder>
- </appender>
- <logger name="com.touchcorp.touchpoint" level="DEBUG" />
- <logger name="org.springframework.web.servlet.mvc" level="TRACE" />
- <root level="INFO">
- <appender-ref ref="FILE" />
- <appender-ref ref="STDOUT" />
- </root>
- </configuration>
- public class MaskingPatternLayout extends PatternLayout {
- private String patternsProperty;
- public String getPatternsProperty() {
- return patternsProperty;
- }
- public void setPatternsProperty(String patternsProperty) {
- this.patternsProperty = patternsProperty;
- }
- @Override
- public String doLayout(ILoggingEvent event) {
- String message = super.doLayout(event);
- if (patternsProperty != null) {
- String[] patterns = patternsProperty.split("\|");
- for (int i = 0; i < patterns.length; i++) {
- Pattern pattern = Pattern.compile(patterns[i]);
- Matcher matcher = pattern.matcher(event.getMessage());
- if (matcher.find()) {
- message = matcher.replaceAll("*");
- }
- }
- } else {
- }
- return message;
- }
- }
- <appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
- <file>c:/logs/kp-ws.log</file>
- <append>true</append>
- <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
- <layout class="com.kp.MaskingPatternLayout">
- <patternsProperty>.*password.*|.*karthik.*</patternsProperty>
- <pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
- </layout>
- </encoder>
- </appender>
- <root level="DEBUG">
- <appender-ref ref="fileAppender1" />
- </root>
- private String patternsProperty;
- private Optional<Pattern> pattern;
- public String getPatternsProperty() {
- return patternsProperty;
- }
- public void setPatternsProperty(String patternsProperty) {
- this.patternsProperty = patternsProperty;
- if (this.patternsProperty != null) {
- this.pattern = Optional.of(Pattern.compile(patternsProperty, Pattern.MULTILINE));
- } else {
- this.pattern = Optional.empty();
- }
- }
- @Override
- public String doLayout(ILoggingEvent event) {
- final StringBuilder message = new StringBuilder(super.doLayout(event));
- if (pattern.isPresent()) {
- Matcher matcher = pattern.get().matcher(message);
- while (matcher.find()) {
- int group = 1;
- while (group <= matcher.groupCount()) {
- if (matcher.group(group) != null) {
- for (int i = matcher.start(group); i < matcher.end(group); i++) {
- message.setCharAt(i, '*');
- }
- }
- group++;
- }
- }
- }
- return message.toString();
- }
- }
- <appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
- <file>c:/logs/kp-ws.log</file>
- <append>true</append>
- <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
- <layout class="com.kp.MaskingPatternLayout">
- <patternsProperty>(password)|(karthik)</patternsProperty>
- <pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
- </layout>
- </encoder>
- </appender>
- <root level="DEBUG">
- <appender-ref ref="fileAppender1" />
- </root>
- My username=test and password=*******
- replace(p){r, t}
- %replace( %replace(%msg){'regex1', 'replacement1'} ){'regex2', 'replacement2'}
Add Comment
Please, Sign In to add comment