小编Sid*_*kha的帖子

Syslog时间戳没有年份?

我正在将我的日志回填到Elasticsearch中.因此,为了按日期的时间戳创建索引,我使用这样的date过滤器:

date {
                "locale" => "en"
                match => ["timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]
                target => "@timestamp"
        }
Run Code Online (Sandbox Code Playgroud)

我正在使用来自syslog的日志,而syslog时间戳格式的doest没有年份:

# Syslog Dates: Month Day HH:MM:SS
SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
Run Code Online (Sandbox Code Playgroud)

因此,在使用日期过滤器之后,创建的索引就像logstash-2015.12.26 是在阅读2014年12月26日的日志.因此,由于时间戳在日志中不可用,所以它默认选择当前年份.

知道如何制作正确的索引吗?

elasticsearch logstash kibana

8
推荐指数
1
解决办法
4248
查看次数

从xml/json JAXB中删除xsi:type信息?

我正在使用JAXB将我的域模型转换为XML和JSON表示.我有学生pojo转换为XMl/JSON.它具有content可以是任何数据类型的属性.

它的模式定义:

<xs:element name="content" type="xs:anyType" />
Run Code Online (Sandbox Code Playgroud)

因此,生成的java文件具有Object内容类型.

Student.java:

 @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "content"
    })
    @XmlRootElement(name = "student")
    public class Student
        extends People
    {
        ................

        @XmlElement(required = true)
        protected Object content;

    }
Run Code Online (Sandbox Code Playgroud)

我使用以下代码进行编组:

马歇尔:

    Map<String, Object> properties = new HashMap<String, Object>(1);
                properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, "name-binding.xml");


   this.ctx = JAXBContext.newInstance("packagename",
   packagename.ObjectFactory.class.getClassLoader(), properties);

   Marshaller marshaller = ctx.createMarshaller();

    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
         marshaller.setProperty(MarshallerProperties.MEDIA_TYPE,media-type);
        marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT,true);
        marshaller.setProperty(MarshallerProperties.JSON_REDUCE_ANY_ARRAYS, true);

        StringWriter sw = new StringWriter();
        marshaller.marshal(object, sw);
Run Code Online (Sandbox Code Playgroud)

XML:

<student>

    <name>Jack n Jones</name>
    <content xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">Sid</content> …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb xml-serialization jackson

8
推荐指数
1
解决办法
1659
查看次数

MongoDB上的JSONPath查询?

我们将User数据存储到MongoDB中.客户端提供JSONPath查询以请求过滤的用户集.

例如:

$.users[@.salary > 10000]

是一个JSONPath查询,用于检索工资大于10000的用户.

数据:

   "users": [ {
      "firstName": "John",
      "lastName" : "doe",
      "age"      : 26,
      "salary"   : 5000, 
      "address"  : {
        "streetAddress": "naist street",
        "city"         : "Nara",
        "postalCode"   : "630-0192"
      },
      "phoneNumbers": [
        {
          "type"  : "iPhone",
          "number": "0123-4567-8888"
        },
        {
          "type"  : "home",
          "number": "0123-4567-8910"
        },
        ........
      ]
    }
Run Code Online (Sandbox Code Playgroud)

然而,同样的MongoQuery将是:

db.inventory.find( { salary: { $gt: 10000 } })
Run Code Online (Sandbox Code Playgroud)

我们的Java应用程序代码连接到MongoDB.

有没有什么办法可以直接运行这个JSONPath查询到MongoDB?

使用Mongo查询意味着将JSONPath查询转换为MongoQuery,这将在代码中进行繁琐的翻译.一个非常强力的方法是让所有用户首先在AS(应用程序)上,然后转换List<Document>为Json字符串,然后运行JSONPath查询.

任何帮助,将不胜感激.

json mongodb jsonpath mongodb-query

8
推荐指数
1
解决办法
565
查看次数

使用Kibana和Elasticsearch进行多租户设置

我将为我的项目使用logstash + ES + kibana.我想知道如何将这个框架用于多租户.任何人都可以解释一下Kibana认证后如何在Kibana的仪表板中查询弹性搜索索引和加载?我可以限制kibana查找特定用户或某个ID的弹性搜索的特定索引吗?有人尝过这个吗?

日Thnx

elasticsearch logstash kibana

7
推荐指数
1
解决办法
4533
查看次数

xml序列化JAXB与Jackson-dataformat-xml吗?

我有一个要支持JSON和XML数据格式序列化/反序列化的XSD。

我使用xjc实用程序生成了Model类。

因此,到目前为止,我已经使用Jackson JSON库处理了JSON数据。

我无法修改Java类,因此我配置ObjectMapperMix-In annotations和其他功能PropertyNamingStrategy(如更改字段名),SerializationFeature.WRAP_ROOT_VALUE以通过代码在我的序列化过程中提供配置。

现在,我想对XML序列化过程做同样的事情。

我已经在线阅读了各种选择:

  1. 杰克斯
  2. 杰克逊图书馆+ Jackson-dataformat-xml.jar
  3. XStream的

哪一种最适合我的情况(不能编辑带注释的POJO,仅允许代码配置)?

xml json jaxb jackson jackson-dataformat-xml

7
推荐指数
2
解决办法
4415
查看次数

使用 jackson-dataformat-xml 自定义根元素进行 XML 反序列化?

所以我用杰克逊JSON序列化/反序列化成功地uptil现在,现在我也在努力将其用于XML序列化/反序列化使用它jackson-dataformat-xml-2.3.0.jar

我用过了

objectmapper.reader(Student.class).withRootName("prefix:student").readValue(jsonString)

将我的 JSON(具有带前缀的根名称)反序列化为Student成功运行的类。

现在,我试图将我的 XML 字符串(具有带前缀的根名称)反序列化为Student

XML:

<prefix:student>
  <name>
    Jack Jones
  </name>
  <id>1</id>
</prefix:student>
Run Code Online (Sandbox Code Playgroud)

我的POJO:

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "name",
        "id",
        ....
    })
    @XmlRootElement(name = "student")
    public class Student
    {

        protected String name;
        BigInteger id;  
..........................
    }
Run Code Online (Sandbox Code Playgroud)

我desrializing此使用XmlMapperjackson-dataformat-xml是这样的:

xmlMapper.reader(Student.class).withRootName("prefix:student").readValue(xmlString)
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

java.io.IOException: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "prefix"
 at [row,col {unknown-source}]: [1,9]
    at com.fasterxml.jackson.dataformat.xml.util.StaxUtil.throwXmlAsIOException(StaxUtil.java:24)
    at com.fasterxml.jackson.dataformat.xml.XmlFactory._createParser(XmlFactory.java:473)
    at com.fasterxml.jackson.dataformat.xml.XmlFactory._createParser(XmlFactory.java:26)
    at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:844)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2091)

Caused …
Run Code Online (Sandbox Code Playgroud)

xml json jaxb jackson jackson-dataformat-xml

6
推荐指数
2
解决办法
4140
查看次数

正确使用 LabelValueBean

我有一个变量:

private ArrayList<LabelValueBean> circleNameIdList;
Run Code Online (Sandbox Code Playgroud)

在我的Action班级中,它的价值被填充。

I want to display the label in my drop-down in JSP and when one label is selected, the corresponding value to that particular label in circleNameIdListto be passed to the server. 例如:如果 label:NewYork被选中,那么它是对应的id = 5,被发送到服务器。

我怎样才能做到这一点?

到目前为止,我在 JSP 中是这样做的:

<s:select list="#session.circleNameIdList" label="Select Circle:" name="circleNameIdList" id="circleNameIdList"></s:select>
Run Code Online (Sandbox Code Playgroud)

但是,显示不正确。

java jsp struts2 ognl jakarta-ee

5
推荐指数
1
解决办法
7524
查看次数

登入阈值后,电子邮件提醒,logstash?

我正在使用logstash,elasticsearchkibana分析我的日志.当特定字符串通过emaillogstash中的输出进入日志时,我通过电子邮件发出警报:

email {
        match => [ "Session Detected", "logline,*Session closed*" ]
...........................
}
Run Code Online (Sandbox Code Playgroud)

这很好用.

现在,我想提醒一个字段的计数(超过阈值时):

例如,如果user是字段,我想在独特用户数超过5 时发出警报.

可以通过emaillogstash中的输出完成吗?
请帮忙.

编辑: 正如@Alcanzar告诉我做的那样:

配置文件:

    if [server] == "Server2" and [logtype] == "ABClog" {

        grok{
        match => ["message", "%{TIMESTAMP_ISO8601:timestamp} %{HOSTNAME:server-name} abc\[%{INT:id}\]:
 \(%{USERNAME:user}\) CMD \(%{GREEDYDATA:command}\)"]       
        }   

        metrics {
                meter =>  ["%{user}"]
                add_tag =>  "metric"
            }   

        }
Run Code Online (Sandbox Code Playgroud)

所以根据上面的说法,为了server2abclog我有一个grok模式来解析我的文件和在usergrok解析的字段上我希望应用度量.

我在上面的配置文件中做了这个,但是当我检查logstash控制台时,我得到了奇怪的行为-vv. …

elasticsearch statsd logstash kibana riemann

5
推荐指数
1
解决办法
9089
查看次数

映射两个相关的枚举?

我有两个相关的枚举:

枚举1:

public enum HttpStatusCode {

    ACCEPTED(202),
    OK(200),
    CREATED(201),
    BAD_REQUEST(400),
    NOT_FOUND(404),
    METHOD_NOT_ALLOWED(405),
    REQUEST_TIMEOUT (408),
    FORBIDDEN(403),
    CONFLICT(409),
    INTERNAL_SERVER_ERROR(500),
    NOT_IMPLEMENTED(501);

    private int httpStatusCode;

    private HttpStatusCode(int name) {
        this.httpStatusCode = name;
    }

    public int getHttpStatusCode() {
        return httpStatusCode;
    }
}
Run Code Online (Sandbox Code Playgroud)

枚举2:

public enum ProtocolStatusCode {

    ACCEPTED(1000),
    OK(2000),
    CREATED(2001),
    BAD_REQUEST(4000)

private int protocolStatusCode;

    private ProtocolStatusCode(int protocolStatusCode) {
        this.protocolStatusCode = protocolStatusCode;
    }

    public int getStatusCode() {
        return protocolStatusCode;
    }
}
Run Code Online (Sandbox Code Playgroud)

这两个枚举值在映射中相关,例如

协议状态码2000(OK)与200(OK)有映射。

因此,在我的代码中,我将获得 ProtocolStatusCode (2000),与此相对应,我将需要 HttpStatusCode (200)。

我正在考虑将 ProtocolStatusCode 枚举维护为

ACCEPTED(1000, 202),
    OK(2000, 200)
Run Code Online (Sandbox Code Playgroud)

因此,当我得到 …

java enums

5
推荐指数
1
解决办法
5672
查看次数

Log4j2 突出显示模式在文本编辑器中不起作用?

我正在使用 log4j2 在 Wildfly 服务器(Jboss 8)上记录我的应用程序。

我想要为我的日志定制一个颜色编码,当我在控制台/终端上看到日志时,它工作得非常好。

以下是模式:

log4j.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
    <Appenders>
    <Routing name="Routing">
      <Routes pattern="$${ctx:logFileName}">

        <Route>

         <RollingFile name="RollingFile" fileName="standalone/log/platform-${ctx:logFileName}.log" filePattern="standalone/log/platform-${ctx:logFileName}-%d{MM-dd-yyyy}.log.gz" append="true">

            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{id}] %style{[%X{logFileName}}{magenta}] [%t] %highlight{[%-5level]}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=magenta} %style{%c{1}:%L}{cyan} - %highlight{%msg%n%throwable}{INFO=white,TRACE=magenta}"/>


                         .....
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在 vi 或 gedit 等文本编辑器中打开日志文件时,我收到未知字符,例如:

[32m15:56:30.536 DEBUG com.syn.test.Test.main() @15 - this is debug message
[m[32m15:56:30.539 DEBUG com.syn.test.Test.main() @19 - this is debug messge 
[m
Run Code Online (Sandbox Code Playgroud)

我知道颜色编码在文本编辑器上不起作用,但如何在编辑器中不包含未知字符,并且还能够在控制台中看到颜色编码

java logging log4j slf4j log4j2

5
推荐指数
1
解决办法
1562
查看次数