我们有一个由我们的开发人员创建的java应用程序,我被要求进行负载平衡,这个应用程序基本上从我们的网络前端获取查询,查询我们的Cassandra后端,并将结果返回到前端。
我已经通过Nginx/循环设置了平衡的一切,但是我试图找出设置日志记录的最佳方法,因为这个应用程序的每个实例(在单个机器上运行)都会记录它负责的任何活动。
一种可能的解决方案是通过NFS共享一个中心日志文件,并允许所有节点写入该文件。问题是我们正在使用log4j,经过一些研究(和测试),我发现有一些问题,各种日志条目被切断/损坏,所以我开始寻找解决方案。我已经读过,logback classic可以在“谨慎”模式下使用,这将允许节点在写入时锁定日志。
我的问题是如何/能够在不重写代码的情况下实现这一点(我不是开发人员)?我知道日志记录的配置文件在哪里,我知道log4j-1.2在哪里。17.jar和slf4j-log4j12-1.7。2.jar文件也是实时的(与我们的应用程序相关)。
是否有一种切换到logback的简单方法,或者这是否需要在应用程序本身中进行修改?
PS我总是可以让每个实例创建自己的日志,但我希望我能找到一种方法让它们使用相同的日志文件
SLF4J手册有一页专门介绍此主题。简而言之,log4j-over-slf4j将把对log4j API的调用重定向到slf4j,而slf4j可以发送到logback。注意,您不需要编写任何代码来实现这些重定向。
对于log4j配置文件,有一个在线工具可以转换log4j。属性返回。xml。
您可以让log4j写入slf4j,slf4j将反过来写入logback。在类路径中,需要log4j-over-slf4j-xxx。jar,logback classic xxx。jar,logback核心xxx。jar,slf4j api xxx。罐子然后配置logback(logback.xml)以使用适当的appender。
看见http://logback.qos.ch/manual/configuration.html
我们总是能够通过这条线从单元测试中禁用日志记录 然而,在将项目更改为Spring启动后,这将不再起作用。当单元测试运行时,日志将被写入。 我还尝试在我们的测试/资源中添加log4j2.xml并将根级别设置为关闭,但这也没有效果。单元测试时,我如何禁用控制台输出?
我使用Datastax Cassandra3.0,同时使用cqlsh模式在cassandra中创建表,正在更改列名,列名按字母顺序排列。请看下面。 这是创建表时的结构。 ...每月一次的瓦尔查尔, ...分配int, ...evdate日期, ...paymentterms int, ...percentageofpayment int, ...变体int, ...paymenttermsumma
我已经在带有JDK 1.8的Linux m / c上安装了 2.2.5。 现在,我使用< code > spring-Cassandra-data jar中提供的< code>CassandraTemplate在< code>Cassandra DB中插入记录。 但是,时间戳被转换为GMT,即在存储在数据库中之前从中扣除5:30小时。 我希望实际时间戳存储在数据库中。 先谢谢你。
问题内容: 我有以下代码: 如何更改此代码: 使其可以像JSONP一样工作…这完全不同吗? 问题答案: 实际上,您只需要添加,剩下的就由jQuery完成。
问题内容: 我有一个仓库表,里面有16吨数据。我有一些整数列。对于我们编写的每个查询,我们都必须将它们转换为BIGINT,因为SUM太大而无法容纳在INT中。 现在,我们正在开发一个新的数据集市。因此,我们认为,为什么不将所有这些列都更改为BIGINT呢?对于新的查询集,我们不必担心。 由于数据已经加载,因此我认为我将使用Management Studio并更改数据类型。但是我首先得到一个警告:
问题内容: 我想将表列更改为可为空。我用过了: 这会导致出现错误。正确的语法是什么? 问题答案: 假设(基于您之前的问题): 用您的实际数据类型替换。