如果log4j属性具有多个文件追加程序,那么在Java中如何确保将日志写入特定文件中.
log4j.rootLogger=INFO,out
log4j.appender.SUCCESS_FILE=org.apache.log4j.FileAppender
log4j.appender.SUCCESS_FILE.File=${dd.log.dir}/success.log
log4j.appender.VALID_FILE=org.apache.log4j.FileAppender
log4j.appender.VALID_FILE.File=${dd.log.dir}/valid_error.log
log4j.appender.TEMP_FILE=org.apache.log4j.FileAppender
log4j.appender.TEMP_FILE.File=${dd.log.dir}/Temp_error.tmp_log
Run Code Online (Sandbox Code Playgroud)
在Java类中,我可以做些什么来编写一些消息,比方说,SUCCESS_FILE和一些消息到TEMP_FILE
Logger log = Logger.getLogger(Test.class);
log.debug("This message should go to SUCCESS_FILE");
log.debug("This message should go to TEMP_FILE");
Run Code Online (Sandbox Code Playgroud) 有什么办法可以在捕获异常时停止路由执行(在显示日志消息后)?
<doTry>
<process ref="messageProcessor"/>
<doCatch>
<exception>java.lang.IllegalArgumentException</exception>
<log message="some message related to the exception" />
</doCatch>
</doTry>
Run Code Online (Sandbox Code Playgroud)
请提供一种在 Spring DSL 中实现此目的的方法。我已经尝试过 < stop/> ,但是没有显示日志消息。
在Cassandra中,列类型设置为Date,在Model类中,字段类型设置为具有getter和setter的java.util.Date。在此期间,com.datastax.driver.mapping.Mapper.save我收到以下异常:
Codec not found for requested operation: [date <-> java.util.Date]
Caused by: com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [date <-> java.util.Date]
at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:56)
at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:25)
at com.datastax.driver.mapping.DriverThrowables.propagateCause(DriverThrowables.java:41)
at com.datastax.driver.mapping.Mapper.save(Mapper.java:272)
Run Code Online (Sandbox Code Playgroud)
在Google搜索过程中发现以下内容:
DATE <-> com.datastax.driver.core.LocalDate : use getDate()
Run Code Online (Sandbox Code Playgroud) 这似乎是一个常见的问题(多次询问)但我无法找到这种行为的解释.以下代码在一个编译器中工作,但抛出Exception in thread "main" java.util.NoSuchElementException另一个编译器
Scanner s = new Scanner(System.in);
System.out.println("Enter name: ");
String name = s.next();
System.out.println("Name is " + name);
Run Code Online (Sandbox Code Playgroud)
在https://www.compilejava.net/和https://www.codechef.com/ide上测试它会抛出异常.但是,在一些编译器上它工作正常.这种行为是否有任何原因(比如JDK中的更改或其他内容)?
我使用以下命令创建了自签名证书:
keytool -genkeypair -keyalg RSA -alias test-api -keystore test-api.p12 -storepass password -validity 3650 -keysize 2048 -storetype pkcs12
Run Code Online (Sandbox Code Playgroud)
然后,我将此密钥库导入到新的信任库中:
keytool -import -trustcacerts -alias test-api-2018 -file test.crt -keystore trusted-keystore.p12 -storetype pkcs12
Run Code Online (Sandbox Code Playgroud)
在Java中,创建自定义SSL存储提供程序(org.springframework.boot.context.embedded.SslStoreProvider)。作为其一部分,使用以下Java代码加载了密钥库和信任库:
try {
try (final InputStream keyStoreStream = new ByteArrayInputStream(Base64.decode(keyStoreEncoded))) {
keyStore = KeyStore.getInstance(KEYSTORE_TYPE_PKCS12);
LOGGER.info("Loading a KeyStore object based on the decoded value.");
keyStore.load(keyStoreStream, serverSslKeyPassword.toCharArray());
}
....
trustStore.load(trustStoreStream, serverSslTrustStorePassword.toCharArray());
}
Run Code Online (Sandbox Code Playgroud)
创建EmbeddedServletContainerCustomizer并设置SSL提供程序的自定义实现:
public void customize(final ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
configurableEmbeddedServletContainer.setSslStoreProvider(awsSslStoreProvider);
}
Run Code Online (Sandbox Code Playgroud)
应用程序因以下错误而无法启动:
Caused by: java.lang.IllegalArgumentException: Private key must be …Run Code Online (Sandbox Code Playgroud)