我想动态创建一个appender并将其添加到记录器.但是,这似乎不可能与slf4j.我可以将我的appender添加到log4j记录器,但后来我无法使用slf4j LoggerFactoy检索记录器.
我想做什么:我创建一个测试类(不是jUnit测试)并在构造函数中传递一个记录器供测试类使用.测试类的每个实例都需要它自己的记录器和追加器来保存日志,以便以后可以在HTML报告中使用它.
我尝试了什么(为简单起见,我创建了一个jUnit测试):
import static org.junit.Assert.assertEquals;
import java.util.LinkedList;
import java.util.List;
import org.apache.logging.log4j.core.LogEvent;
import org.junit.Test;
import org.slf4j.helpers.Log4jLoggerFactory;
import ch.fides.fusion.logging.ListAppender;
public class ListAppenderTest {
@Test
public void test() {
String testName = "test1";
// the log messages are to be inserted in this list
List<LogEvent> testLog = new LinkedList<>();
// create log4j logger
org.apache.logging.log4j.core.Logger log4jlogger = (org.apache.logging.log4j.core.Logger) org.apache.logging.log4j.LogManager
.getLogger("Test:" + testName);
// create appender and add it to the logger
ListAppender listAppender = new ListAppender("Test:" + testName + ":MemoryAppender", testLog);
log4jlogger.addAppender(listAppender); …Run Code Online (Sandbox Code Playgroud) 我的任务是在配置文件中混淆密码.虽然我不认为这是正确的方法,但管理者不同意......
所以我正在开发的项目基于Spring Boot,我们正在使用YAML配置文件.目前密码是纯文本的:
spring:
datasource:
url: jdbc:sqlserver://DatabaseServer
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: ele
password: NotTheRealPassword
Run Code Online (Sandbox Code Playgroud)
我们的想法是使用一些支持模糊或加密密码的特殊语法:
spring:
datasource:
url: jdbc:sqlserver://DatabaseServer
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: ele
password: password(Tm90VGhlUmVhbFBhc3N3b3Jk)
Run Code Online (Sandbox Code Playgroud)
为了使其工作,我想使用正则表达式解析属性值,如果匹配则将值替换为deobfuscated/decrypted值.
但是我如何拦截财产价值呢?