我有一个库进行运行时设置和log4j的配置(没有log4j.properties或log4j.xml).我已经使用名为MyLoggerFactory的类定义了一个bean,我希望这是第一个使用spring初始化的bean.我看到的问题已与春季提交到有初始化的订单支持,但我不知道是否有标记一个bean作为第一个bean由Spring容器被初始化的方法吗?
我知道这个问题已在stackoverflow中被多次询问,但不知何故仍然在找出解决方案时遇到一些麻烦.我认为以下示例是一个使用静态方法的好例子
public class ConnectionFactory
{
public static Connection createConnection(ConnectionType connectionType, String ipAddr, Integer port)
{
//Some error checking
switch(connectionType)
{
case TCP:
return createTcpConnection(ipAddr, port);
case UDP:
return createUdpConnection(ipAddr, port);
case RTP:
return createRtpConnection(ipAddr, port);
case SCTP:
return createRtpConnection(ipAddr, port);
default:
break;
}
}
// TcpConnection, RtpConnection, SctpConnection and UdpConnection implement interface Connection
public Connection createTcpConnection()
{
Connection connection = new TcpConnection();
.....
.....
return connection;
}
public Connection createUdpConnection()
{
Connection connection = new UdpConnection();
.....
.....
return connection; …Run Code Online (Sandbox Code Playgroud) 我不清楚在使用android-maven-plugin构建时禁用调试构建的确切过程:
我知道带有ADT(21.1)的导出向导将自动禁用调试,但它会被破坏,因为BuildConfig.DEBUG始终返回true并且我的日志记录过去依赖于它.(现在我有自己的maven构建配置文件中定义的日志记录属性.)
所以,如果我必须使用android-maven-plugin禁用调试,那么正确的方法是什么?
我使用以下插件:
我不确定签名和zipaligning是否会自动禁用调试,因为我在maven输出中看到以下行:
[INFO] --- android-maven-plugin:3.5.0:apk (default-apk) @ stackx ---
[INFO] Copying local assets files to combined assets directory.
[INFO] Enabling debug build for apk.
Run Code Online (Sandbox Code Playgroud)
是否有明确的方法来禁用调试?
Option在Scala 处理时,我应该考虑哪些事情来决定是映射还是模式匹配?例如,如果我有Option[MyClass],我可以通过以下方式处理它:
def getList(myOptionInstance: Option[MyClass]): List[String] =
myOptionInstance map (...) getOrElse(List.empty[String])
Run Code Online (Sandbox Code Playgroud)
要么
def getList(myOptionInstance: Option[MyClass]): List[String] = myOptionInstance match {
case Some(mySomeInstance) => .....
case None => List.empty[String]
}
Run Code Online (Sandbox Code Playgroud)
我何时会选择一个而不是另一个?
我为我的logback配置使用TimeBasedRollingPolicy和SizeAndTimeBasedFNATP触发策略.日志文件的翻转设置为每天发生,如果日志文件大小超出限制,也会触发日志文件.
如果我TimeBasedRollingPolicy通过每日翻转来启用setMaxHistory(10),那么它将在过去10天内归档所有日志文件.但我想要的是每天在SizeAndTimeBasedFNATP上设置maxHIstory.
这是否可以使用logback?
我花了太多时间尝试调试以下问题,但我不确定问题出在哪里.
问题:获得400 Bad Request, Invalid Json以下异常的响应:
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
at [Source: [B@6ee503c9; line: 1, column: 1]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164) ~[jackson-databind.jar:2.2.2]
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:2931) ~[jackson-databind.jar:2.2.2]
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:2846) ~[jackson-databind.jar:2.2.2]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1569) ~[jackson-databind.jar:2.2.2]
at play.api.libs.json.JacksonJson$.parseJsValue(JsValue.scala:480) ~[play-json_2.10.jar:2.2.0]
at play.api.libs.json.Json$.parse(Json.scala:27) ~[play-json_2.10.jar:2.2.0]
Run Code Online (Sandbox Code Playgroud)
在我的控制器中测试的方法:
def createArticle(id: String) =
Action.async(parse.json) { implicit request =>
(request.body \ "content").asOpt[String].map {
............
............
}.getOrElse(BadRequest("Invalid request body"))
}
Run Code Online (Sandbox Code Playgroud)
相应的单元测试:
"create article" in {
running(FakeApplication()) {
val postJson = Json.obj("content" -> "article content")
val result = resource.createArticle(ARTICE_ID)(FakeRequest(POST, controllers.routes.ArticleResource.create(ARTICLE_ID).url).withJsonBody(postJson).withHeaders(CONTENT_TYPE …Run Code Online (Sandbox Code Playgroud) 我有一个使用log4j SyslogAppender(facility = USER)的java应用程序,我可以看到在端口514上使用tcpdump我的应用程序正在发送预期的日志消息作为数据报,netstat也向我显示syslogd(red hat)正在运行并正在监听0.0 .0.0:514但我没有在/ var/log/messages中看到任何日志记录.
在我的syslog.conf中,我有
*.info /var/log/messages
Run Code Online (Sandbox Code Playgroud)
我对SyslogAppender的转换模式是
%d{MMM dd HH:mm:ss} %F %L %5p [%t] %m %n"
Run Code Online (Sandbox Code Playgroud)
我无能为力,为什么它没有记录或我应该在哪里找到什么是失败的.我没有足够的权限在机器上启动/停止syslogd或手动运行以启用详细的调试日志.
有关我如何进行的任何指示?
编辑:
下面的Appender
private void initSyslog() {
SyslogAppender syslogAppender = new SyslogAppender();
syslogAppender.setName("syslog");
syslogAppender.setLayout(new PatternLayout("%d{MMM dd HH:mm:ss} %F %L %5p [%t] %m %n"));
syslogAppender.setFacility("USER");
syslogAppender.setFacilityPrinting(true);
syslogAppender.setSyslogHost("localhost");
syslogAppender.activateOptions();
Logger.getRootLogger().addAppender(syslogAppender);
Logger.getRootLogger.info("Syslogdone");
}
Run Code Online (Sandbox Code Playgroud) 当我使用注释@Test(timeout = 3000)运行测试并且超时时,它会立即终止测试并且不会调用使用@After注释的tearDown方法.
在这种情况下清理的方法是什么?
编辑:我的测试是通过线路使用jax-rs调用资源端点,测试在http请求中间超时.这是我相当确定@After没有被调用的情况
如果我定义了一个Solr.DateField类型的字段,我读SOLR总是将它保存在GMT中.但我发现SOLR只需要花费在我的数据库中定义的时间并在没有转换的情况下编写它.
它有任何配置参数吗?
我正在使用请求承诺库并尝试根据其文档将超时设置为毫秒。我在服务器端很少有请求需要超过一分钟才能响应,无论我为超时设置什么值,请求总是在一分钟后超时。在请求中设置读取超时的正确方法是什么?
我的请求
rp({
uri: "http://something.com/long_running_request",
timeout: 180000
})
Run Code Online (Sandbox Code Playgroud)