首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何保证骆驼记录在ASCII文本中,而不是小数?

如何保证骆驼记录在ASCII文本中,而不是小数?
EN

Stack Overflow用户
提问于 2017-11-15 18:50:47
回答 1查看 183关注 0票数 0

在我的骆驼路线中,我使用骆驼的日志eip作为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from("direct:someSourceWithBodyOfTypeMap")
    .marshal().json(JsonLibrary.Jackson)
    .to("direct:logHandler");


// on a separate route builder
from("direct:logForFilebeat")
    .convertBodyTo(String.class, "UTF-8")
    .log(LoggingLevel.INFO, "jsonLogger","${body}");

此路由的目的是将Map类型的源封送至json,并记录稍后由日志聚合器获取的主体。我在日志中使用logback。logback-spring.xml的一部分如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <appender name="JSON_TX" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>${BASE_LOG_PATH}/json.log</file>
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
         <fileNamePattern>${BASE_LOG_PATH}/json.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
         </timeBasedFileNamingAndTriggeringPolicy>
      </rollingPolicy>
      <encoder>
         <charset>UTF-8</charset>
         <pattern>%msg%n</pattern>
      </encoder>
   </appender>
   <appender name="ASYNC_JSON_TX" class="ch.qos.logback.classic.AsyncAppender">
      <appender-ref ref="JSON_TX" />
   </appender>
   <logger name="jsonLogger" level="INFO">
      <appender-ref ref="ASYNC_FILEBEAT_TX" />
   </logger>

在正常流中,它被正确地记录为json字符串,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"id":2456,"name":"foo","gender":"MALE"}

但也有一些实例将其记录为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
123 34 105 100 34 58 50 52 53 54 44 34 110 97 109 101 34 58 34 102 111 111 34 44 34 103 101 110 100 101 114 34 58 34 77 65 76 69 34 125

这个小数日志是在路由处理消息时生成的,并且在关闭时触发了弹簧引导。(我能够在本地复制此功能,方法是在源路由之前在处理器中放置一个断点,然后在消息被路由到“someSourceWithBodyOfTypeMap”时关闭spring引导应用程序。)

如何执行附加到日志文件的内容应该是ASCII文本格式,而不是十进制?是什么触发了日志在小数点中的位置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-16 00:39:51

它不小数它,因为您的消息体被编组成一个字节流。您可以首先通过在.convertBodyTo(String)之后添加marshal将消息体转换为字符串,或者指定记录器应该通过${bodyAs(String)}转换为String。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47320759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文