import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LogSanitizer {
private final Map<String, String> sanitizationRules;
public LogSanitizer(String configFilePath) throws IOException {
// Load sanitization rules from the configuration file
sanitizationRules = loadSanitizationRules(configFilePath);
}
private Map<String, String> loadSanitizationRules(String configFilePath) throws IOException {
Map<String, String> rules = new HashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(configFilePath))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split("=");
if (parts.length == 2) {
rules.put(parts[0].trim(), parts[1].trim());
}
}
}
return rules;
}
public String sanitizeLine(String line) {
String sanitizedLine = line;
for (Map.Entry<String, String> rule : sanitizationRules.entrySet()) {
String pattern = rule.getValue();
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(sanitizedLine);
sanitizedLine = m.replaceAll(rule.getKey());
}
return sanitizedLine;
}
public static void main(String[] args) throws IOException {
//Example usage. Replace with your actual config file path
String configFilePath = "sanitization_rules.config";
LogSanitizer sanitizer = new LogSanitizer(configFilePath);
String logLine = "This is a log line with sensitive data: username=john.doe, password=secret123";
String sanitizedLogLine = sanitizer.sanitizeLine(logLine);
System.out.println("Original log line: " + logLine);
System.out.println("Sanitized log line: " + sanitizedLogLine);
logLine = "Email: test@example.com Phone: 555-123-4567";
sanitizedLogLine = sanitizer.sanitizeLine(logLine);
System.out.println("Original log line: " + logLine);
System.out.println("Sanitized log line: " + sanitizedLogLine);
}
}
Add your comment