- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写库来针对计算服务器工作。我正在记录计算时间(例如作业的开始和停止)。我想独立于客户端应用程序的日志框架配置来记录此值。我通过以编程方式使用 Graylog 实现了这一点。因此,我从我的库中配置并初始化记录器,而客户端却毫不知情。
这是我的初始化代码
import org.graylog2.log.GelfAppender;
void init() {
final GelfAppender appender = new GelfAppender();
appender.setName("MyServerAppender");
appender.setGraylogHost("bigcpuserver");
appender.setGraylogPort(2020);
appender.setExtractStacktrace(true);
appender.setAddExtendedInformation(true);
appender.setAdditionalFields("{'environment': 'TEST',"
+ "'ip_address': '10.20.30.40',"
+ "'serverName': 'devPc',"
+ "'libVersion': '1.0.0',"
+ "'application': 'loggingTestApp',"
+ "'appversion': '2.0.7'}");
appender.activateOptions();
final org.apache.log4j.Logger myLog =
org.apache.log4j.Logger.getLogger(MyHiddenLoggerClass.class);
myLog.addAppender(appender);
}
到目前为止一切顺利。我可以通过以下行从代码中的任何位置将日志发送到 Graylog:
org.apache.log4j.Logger.getLogger(MyHiddenLoggerClass.class).info("message");
我想将数字字段添加到我的日志中,以便 Graylog 可以对它们运行统计信息。例如,找出哪些作业耗时最长——可能需要算法优化——或最短——可能根本不需要计算服务器。
我可以通过以下方式向 MDC 添加字段:
org.apache.log4j.MDC.put("cpuTime", startTimeMillis-endTimeMillis);
并且,从那时起,所有日志都将包含具有该值的 cpuTime
字段。我在发送特定日志条目后将其删除,以防止将其带入后续日志条目:
org.apache.log4j.MDC.remove("cpuTime");
但是,对于 Graylog 来说,这些都是字符串,因此它只能对它们进行计数并查看有多少个不同的值。
我如何告诉 Graylog “cpuTime”将始终是 long
?
我尝试在 init()
时预先配置字段。
为此,我还测试了其他类层次结构,例如 me.moocar
。例如,我尝试过以下方法:
final me.moocar.logbackgelf.GelfAppender appender =
new me.moocar.logbackgelf.GelfAppender();
appender.setName("MyServerAppender");
appender.setIncludeFullMDC(true);
appender.setGraylog2ServerHost("bigcpuserver");
appender.setGraylog2ServerPort(2020);
final Map<String, String> additionalFields = new HashMap<String, String>();
final Map<String, String> fieldTypes = new HashMap<String, String>();
additionalFields.put("cpuTime", "42");
fieldTypes.put("cpuTime", "long");
appender.setAdditionalFields(additionalFields);
appender.setFieldTypes(fieldTypes);
appender.start();
final ch.qos.logback.classic.LoggerContext logCtx =
(LoggerContext) LoggerFactory.getILoggerFactory();
appender.setContext(logCtx);
ch.qos.logback.classic.Logger logToConfigure =
logCtx.getLogger(MyHiddenLoggerClass.class);
logToConfigure.addAppender(appender);
所以我可以在我的测试代码中执行以下操作:
final ch.qos.logback.classic.Logger log =
logCtx.getLogger(MyHiddenLoggerClass.class);
MDC.put("cpuTime", totalTime);
log.error("task finished.");
在 Graylog 中,日志“任务完成”。将伴随一个名为“cpuTime”的字段,并包含一个字符串,其中包含日志时刻的totalTime
值。我只希望包含的值是一个数字。有人可以帮我吗?
如果有帮助的话,我可以将整个更改为 me.moocar
层次结构。但到目前为止,me.moocar
和 org.graylog2.log
都没有给我想要的结果;使用后者,我可以更轻松地将附加程序附加到记录器。
me.moocar
似乎仅限于 String
作为附加字段的类型。因此,如果我想要数字字段,我必须选择其他选择。
最佳答案
您需要根据数据类型发送值。有一点不同
{'cpuTime':'42'}
和
{'cpuTime':42}
我不知道Graylog中是否有可用的转换器(您可以通过过滤器
处理logstash中的字段转换)。如果您想在记录器级别解决问题,请查看 http://logging.paluch.biz/examples/logback.html ,特别是additionalFieldTypes
。
关于java - 如何以编程方式将数字字段记录到 Graylog 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438211/
我有包含在 full_message 中的日志; -端点:例子/例子/abc -EndPoint:example/example/qfdsf -端点:例子/例子 ..等等 我正在尝试编写搜索查询以获取
我使用 graylog 2.0 ( http://docs.graylog.org/en/2.0/pages/queries.html ),它非常有用。 我想优化我的全文搜索。目前我是:- 在 gra
我需要在我的数据中搜索,这是 apache2 日志,我需要所有请求的 URL 是这样的: http://*&ucode=jn04 它以 http 开头并以 &ucode=jn04 结尾 我试过这个查询
我正在尝试通过他们的docs建立一个Graylog服务器 我安装了所有内容,打开了 flex 搜索,安装了mongo,配置文件,添加了名称/ passwd,但是当我访问localhost:9000时仍
我一直在安装最新版本的 Docker (1.8)。这个新版本很棒,因为您可以设置特定的日志驱动程序将日志发送到 Graylog2(例如)。 这是来自 docker 的博客文章:Docker Blog
我有一个 Graylog 服务器,它显示 2 个服务器的 IP 地址而不是主机名。它显示其他服务器的正确主机名。我已经确认DNS是正确的。关于为什么 GL 会显示 IP 而不是主机名有什么想法吗? 最
我正在尝试创建一个 Graylog 服务器 - Graylog 收集器设置,其中 graylog 收集器在一台机器上收集系统日志文件并将它们发送到服务器。 我已经使用 AWS AMI 创建了 Gray
在我的 Graylog 服务器中,我想创建一个搜索值来查找以下查询:ctxt__Error:"User \"USERNAME\" not found." . 但我想为每个用户名找到任何错误。当我这样做
Graylog使用Elasticsearch作为代表,因此我也将其标记为Elasticsearch。 因此,我有以下消息模式: DURATION | GET > /usuarios/XXXXXXXXX
我需要从 Graylog 中删除特定的日志消息,但是似乎没有任何公共(public) API 可以执行此操作(通过 Graylog API 浏览器)。 关于如何做到这一点的文档很少。我发现一些随机文章
是否可以按时间顺序查看 Graylog2 中的搜索结果? 默认似乎是按时间倒序显示它们。 我真正想做的是找到特定错误发生时的第一次出现(及时)。目前,我能找到的唯一方法是从下拉列表中选择“所有时间”,
情况 我编写库来针对计算服务器工作。我正在记录计算时间(例如作业的开始和停止)。我想独立于客户端应用程序的日志框架配置来记录此值。我通过以编程方式使用 Graylog 实现了这一点。因此,我从我的库中
我是 Docker 和 Graylog 的新手。谁能告诉我如何将日志数据发送到 Graylog 服务器的示例? 最佳答案 其实很简单! Graylog 的首选日志格式 - GELF - 由 Docke
我正在尝试将 Web 服务输入/输出作为 xml 插入到 Graylog 中。为此,我使用了“GELFJ - 用于 Log4j 的 GELF Appender 和用于 JDK 日志记录的 GELF 处
我有以下 docker-compose.yml(略有改动,但从 here 复制): version: '2' services: mongodb: image: mongo:3 v
在可用的开源日志管理工具中,我遇到了这两个,但不知道该使用哪一个。我尝试搜索有关 Graylog 与 Fluentd 的文章,但找不到。 有人可以建议哪一个适合以下标准, * 生产主从架构,没有那么高
是否可以使用 Quickfilter 在 Graylog2 中搜索完整消息? 我可以成功搜索短消息,但似乎只能使用流过滤完整消息。 我需要过滤旧的完整消息,而新流仅应用于新消息。这个问题有什么解决办法
我正在尝试使 Graylog Docker 容器持久化。这意味着重新启动后(docker-compose down; docker-compose up)日志将与配置一起仍然存在。我使用了 https
在使用 yum 安装 graylog2-web 应用程序时,我遇到了以下问题 --> Finished Dependency Resolution Error: graylog-server conf
现在我正在尝试使用 log4j2 将级别为 INFO 或更高(警告、错误和致命)的所有内容记录到我的服务器我的控制台的级别为INFO。我能够将事情记录到我的控制台,但是,我在将正确的级别正确地记录到服
我是一名优秀的程序员,十分优秀!