我的日志配置如下所示:
logging:
level: INFO
loggers:
"com.example.broker": DEBUG
"org.apache.http.wire": DEBUG
console:
threshold: ERROR
file:
enabled: true
currentLogFilename: /opt/broker/log/broker.log
archivedLogFilenamePattern: /opt/broker/log/broker.%d.log.gz
archivedFileCount: 14
Run Code Online (Sandbox Code Playgroud)
这很棒,我通过正确的旋转和清理得到了我在给定文件中的所有日志.
除了仍然进入stdout的访问日志,因此最终(在我的情况下)/var/log/upstart/broker.log只能由root访问.我想使用相同或类似的日志配置来重定向这些日志/opt/broker/log/access.log.
这是可能的,如果是的话,怎么样?
我需要将jetty servlet添加到使用dropwizard框架实现的现有服务器中.
更具体:
一些谷歌搜索后,我无法弄清楚如何做到这一点.有人可以给我一个指示或片段吗?谢谢!
在Dropwizard中生成的访问日志具有以下格式: -
10.10.10.10 - - [16/Mar/2015:23:59:59 +0530]"GET /yyyy/vx.x/uri HTTP/1.1"200 - " - "" - "1
字段1: - 10.10.10.10(提出请求的IP地址)
第二场: - [16/Mar/2015:23:59:59 +0530](请求时间和日期)
字段3: - "GET /yyyy/vx.x/uri HTTP/1.1"(HTTP Rest API方法)
字段4: - 200(HTTP响应代码)
第5场: - " - "(????)
字段6: - " - "(????)字段7: - 1(????)
有人能解释访问日志格式中每个字段的含义吗?我对最后一栏意义更加好奇.
感谢帮助.
我正在寻找一个简单易用的Java系统,它为我创建了一个REST服务.所以我找到了dropwizard,但据我可以使用谷歌,它发现它缺乏热部署,虽然码头能够这样做.使用maven-shade-plugin时,至少需要10秒才能构建该东西.此外,我的IDE报告说,当涉及shade-plugin时,它不能使用编译保存功能(也就是热部署).
我可以用某种方式使用hotdeployment吗?或者我可以使用什么呢?
更新:如果没有什么能解决这个问题,我可能会使用球衣和guice等的组合,这在本文中有所解释
我开始使用Dropwizard,我正在尝试创建一个需要使用数据库的Command.如果有人想知道我为什么要这样做,我可以提供充分的理由,但无论如何这不是我的问题.它是关于Dropwizard中的依赖性反转和服务初始化以及运行阶段.
Dropwizard鼓励使用它的DbiFactory来构建DBI实例,但是为了得到一个,你需要一个Environment实例和/或数据库配置:
public class ConsoleService extends Service<ConsoleConfiguration> {
public static void main(String... args) throws Exception {
new ConsoleService().run(args);
}
@Override
public void initialize(Bootstrap<ConsoleConfiguration> bootstrap) {
bootstrap.setName("console");
bootstrap.addCommand(new InsertSomeDataCommand(/** Some deps should be here **/));
}
@Override
public void run(ConsoleConfiguration config, Environment environment) throws ClassNotFoundException {
final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, config.getDatabaseConfiguration(), "postgresql");
// This is the dependency I'd want to inject up there
final SomeDAO dao …Run Code Online (Sandbox Code Playgroud) 我读了一些关于dropwizard应用程序构建的评论:[1]"Dropwizard被设计为作为JAR运行,而不是作为WAR文件运行." [2]"你不能这样做.Dropwizard嵌入了Jetty.你应该考虑使用Jersey作为标准的Web应用程序."所以,我的问题是:
1 - 如何在生产环境中部署jar文件?
2 - 我将如何管理服务?例如,有没有办法监控应用程序的健康状况?如果应用程序崩溃,我怎么能自动重新启动它?
在我的DropWizard(v0.7.0)应用程序中,我有DummyHealthCheck这样的:
public class DummyHealthCheck extends HealthCheck {
@Override
protected Result check() throws Exception {
return Result.healthy();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的主要Applicationimpl:
public class MyApplication extends Application<MyConfiguration> {
@Override
public void run(MyConfiguration configuration, Environment environment)
throws Exception {
environment.jersey().register(new DummyHealthCheck());
}
}
Run Code Online (Sandbox Code Playgroud)
当我启动服务器时,它成功启动(没有异常/错误),但是我收到以下消息:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! THIS APPLICATION HAS NO HEALTHCHECKS. THIS MEANS YOU WILL NEVER KNOW !
! IF IT DIES IN PRODUCTION, WHICH MEANS YOU WILL NEVER KNOW IF YOU'RE !
! LETTING YOUR USERS …Run Code Online (Sandbox Code Playgroud) 我正在使用带有球衣的dropwizard.我在资源中的路径有问题,并想调试它.你如何为此配置泽西环境变量?以下不起作用.
@ClassRule
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(UserResource.class)
.addProperty("jersey.config.server.tracing.type", "ON")
.build();
Run Code Online (Sandbox Code Playgroud) 我想在调试模式下运行我的Dropwizard 0.8.5应用程序,其中:
通常我的DW应用程序从命令行运行,如下所示:
java -jar build/libs/myapp.jar server src/test/resources/myapp-local.yml
Run Code Online (Sandbox Code Playgroud)
那么在调试模式(JPDA)中运行它的命令行参数是什么,或者myapp-local.yml完成此操作所需的修改是什么?
我假设我只是设置断点,然后在Eclipse中创建一个新的调试配置,但不确定使用什么参数/配置来设置此配置.有任何想法吗?
dropwizard ×10
java ×6
access-log ×1
classpath ×1
deployment ×1
hotdeploy ×1
http ×1
jdbi ×1
jersey ×1
jetty ×1
logging ×1
production ×1
rest ×1
servlets ×1
tomcat ×1