- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
注意虽然我还没有设法找到问题的最终解决方案,但在 Andreas 的帮助下,我意识到我错误地配置了 log4j,它使用的是默认属性文件,而不是我自己指定的属性文件。当我让它正常工作时,我会发布解决方案,以便将来人们可以使用它......就在本周末的 octoberfest 之后 :D
好的,所以我知道这里也有人问过类似的问题,但是我还没有找到有同样问题的帖子或修复它的解决方案。
好的,所以我尝试开始使用 log4j 来尝试并习惯使用我的代码进行正确的日志记录(是的最佳实践!)但是我在尝试修复我的代码中的错误时遇到了一些问题。问题是我需要读取控制台输出,但 log4j 将所有内容都放在那里(DEBUG)。起初这不是问题,所以我没有费心让 log4j 停止这样做。但现在我发现很难在输出中查找我需要的信息。
作为我的问题的快速解决方案,我尝试以编程方式将我的两个记录器的日志记录级别更改为 OFF,没有。
然后我尝试更改属性文件以防止它写入控制台,不。
然后我试图删除属性文件中的所有内容,认为 log4j 将不再知道如何表现,不。
然后我尝试通过注释掉所有行而不初始化任何记录器来从我的代码中完全删除 log4j,不......等等,什么?
是的,似乎即使我的项目中没有任何 log4j 代码,log4j 也不想停止。
此时我尝试清理项目(我使用的是 eclipse),然后我尝试重新启动 eclipse,然后是我的笔记本电脑。
我知道我可能犯了一个大疏忽,但我觉得注释掉所有代码会有所作为。
我应该注意,我尝试的任何事情都不会对正在打印的内容产生任何影响,它总是以相同的顺序打印相同的行(因此我确定我做错了什么)
如能提供任何帮助,我们将不胜感激
编辑 1:我还应该说明,我认为是 log4j 导致问题的原因是控制台中的所有输出都采用我在 log4j.properties 文件中定义的格式。
编辑 2:
一节课
public class MessageSender extends AbstractCommand{
//private static final Logger LOG = Logger.getLogger(HelloWorldCommandFactory.class);
private String messageText = "placeholder";
private final long MESSAGE_ID = XXXXXXXXXX;
@Override
public void execute() {
try {
//LOG.setLevel(Level.OFF);
//LOG.info("MESSAGE_TEXT: "+messageText);
TelegramRequest telegramRequest = TelegramRequestFactory.createSendMessageRequest(MESSAGE_ID, messageText, true, null, null);
//LOG.info("REQUEST: "+telegramRequest.equals(getRequestHandler()));
requestHandler.sendRequest(telegramRequest);
} catch (JsonParsingException | TelegramServerException e) {
e.printStackTrace();
}
}
public MessageSender(Message message, RequestHandler requestHandler){
super(message, requestHandler);
}
public MessageSender(Message message, RequestHandler requestHandler, String text){
super(message, requestHandler);
this.messageText = text;
}
其他类
public class MyCommandFactory implements CommandFactory {
//private static final Logger LOG = Logger.getLogger(MyCommandFactory.class);
@Override
public Command createCommand(Message message, RequestHandler requestHandler) {
//LOG.setLevel(Level.OFF);
//LOG.info("MESSAGE_ID: "+message.getChat().getId()+" MESSAGE_BODY: "+message.getText());
return new MessageSender(message, requestHandler);
}
}
输出示例(我删除了某些敏感信息)
15-09-25 06:32:42 INFO AbstractCommandDispatcher:69 - *************************************
2015-09-25 06:32:42 INFO AbstractCommandDispatcher:70 - ** Starting up command dispatcher...
2015-09-25 06:32:42 INFO AbstractCommandDispatcher:71 - *************************************
2015-09-25 06:32:43 INFO AbstractCommandWatcher:50 - >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2015-09-25 06:32:43 INFO AbstractCommandWatcher:51 - >> Starting up command watcher...
2015-09-25 06:32:43 INFO AbstractCommandWatcher:52 - >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2015-09-25 06:32:45 DEBUG DefaultCommandWatcher:104 - Polling Telegram updates (offset:0, limit:100, timeout=0)...
2015-09-25 06:32:45 DEBUG RequestAddCookies:122 - CookieSpec selected: default
2015-09-25 06:32:45 DEBUG RequestAuthCache:76 - Auth cache not set in the context
2015-09-25 06:32:45 DEBUG PoolingHttpClientConnectionManager:249 - Connection request: [route: {s}->https://api.telegram.org:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]
2015-09-25 06:32:45 DEBUG PoolingHttpClientConnectionManager:282 - Connection leased: [id: 0][route: {s}->https://api.telegram.org:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]
2015-09-25 06:32:45 DEBUG MainClientExec:234 - Opening connection {s}->https://api.telegram.org:443
2015-09-25 06:32:46 DEBUG DefaultHttpClientConnectionOperator:131 - Connecting to api.telegram.org/
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:335 - Connecting socket to api.telegram.org/ with timeout 0
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:388 - Enabled protocols: [TLSv1, TLSv1.1, TLSv1.2]
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:389 - Enabled cipher suites:[TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA, TLS_ECDH_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:393 - Starting handshake
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:423 - Secure session established
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:424 - negotiated protocol: TLSv1.2
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:425 - negotiated cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:433 - peer principal: CN=api.telegram.org, OU=Domain Control Validated
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:442 - peer alternative names: [api.telegram.org, www.api.telegram.org]
2015-09-25 06:32:46 DEBUG SSLConnectionSocketFactory:446 -
2015-09-25 06:32:46 DEBUG DefaultHttpClientConnectionOperator:138 - Connection established
2015-09-25 06:32:46 DEBUG MainClientExec:255 - Executing request POST
2015-09-25 06:32:46 DEBUG MainClientExec:260 - Target auth state: UNCHALLENGED
2015-09-25 06:32:46 DEBUG MainClientExec:266 - Proxy auth state: UNCHALLENGED
2015-09-25 06:32:46 DEBUG headers:124 - http-outgoing-0 >>
2015-09-25 06:32:46 DEBUG headers:127 - http-outgoing-0 >> Content-Length: 28
2015-09-25 06:32:46 DEBUG headers:127 - http-outgoing-0 >> Content-Type: application/x-www-form-urlencoded; charset=UTF-8
2015-09-25 06:32:46 DEBUG headers:127 - http-outgoing-0 >> Host: api.telegram.org
编辑 3:
log4j.properties 文件
log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= %d{HH:mm:ss,SSS} [%t] %-5p %x %C{1} : %m%n
最佳答案
您可以将级别更改为OFF,这应该会删除所有日志记录。根据 log4j 网站,按重要性排序的有效级别为 TRACE、DEBUG、INFO、WARN、< strong>错误,致命。有一个未记录的级别,称为 OFF,它比 FATAL 级别更高,并关闭所有日志记录。
在采用程序化方法时,您的做法是否正确?这就是我会做的 -
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
或者,您也可以执行 Logger.getRootLogger().removeAllAppenders();
像
Logger.getRootLogger().addAppender(new NullAppender());命令行工具
一样完全静音。
确保您重新启动 eclipse
并clean build
您的项目以使更改生效。
如果上述方法不起作用 -创建一个 log4j.properties
文件并将该文件放在应用程序的 classpath
中。将以下 内容
粘贴到同一位置 -
log4j.debug=FALSE
log4j.rootLogger=INFO, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=C:/apache-tomcat-5.5.27/logs/testlog.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=5
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss.SSSS} %p %t %c - %m%n
关于java - 如何阻止 log4j 记录日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32774960/
不同的 LogCat 方法是: Log.v(); // Verbose Log.d(); // Debug Log.i(); // Info Log.w(); // Warning Log.e();
在android群里,经常会有人问我,android log是怎么用的,今天我就把从网上以及sdk里东拼西凑过来,让大家先一睹为快,希望对大家入门android log有一定的帮助. android
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 社区 12
我正在尝试使用 sonarlint 检查代码质量.上面的问题概要,我不明白为什么它要说要大写。但是 this discussion与上述建议相反。哪一个应该被认为是正确的? 最佳答案 这没有正确答案,
随着 n 变大,log*(log n) 和 log(log* n) 这两个函数会更快吗? 这里,log* 函数是迭代对数,定义如下: 我怀疑它们是相同的,只是写法不同,但它们之间有什么区别吗? 最佳答
作为家庭作业,我被要求在 O(log(n)) 中编写一个算法,我可以计算出我编写的算法的复杂度为 O(log(n) + log(n/2) + log(n/4) + log(n/8) + ... + l
我正在使用 Tomee。日志文件夹包含这样的文件 localhost_access_log.2016-12-02.txt localhost.2016-12-02.log catalina.2016-
Android Log.v、Log.d、Log.i、Log.e 等的 ios 等效项是什么?同样在 android 上,我使用 Android 设备监视器和 logcat 来访问我的手机日志,我需要在
我认为下面的代码是 O(log log n) 因为它里面有 i*i 但我对 log n 感到困惑> 和 log (log n)。 for (i=2; i*i<=number; i++) { if
我正在修改 kvm 模块,并在内核代码中添加了 printk 语句。运行虚拟机后,printk 为我提供了错误地址和有关 guest 操作系统的其他信息。 我需要从这个信息中生成统计信息。当我使用 d
我有一个部署为 Windows Azure Web 角色的 WCF 服务。 我正在使用 Enterprise Library 进行异常处理,并且在我的本地 Development Fabric 中,似
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
在 Go 的生产中使用 log.SetFlags(log.LstdFlags | log.Lshortfile) 是好的做法(至少是一般做法)吗?我想知道在生产中这样做是否存在性能或安全问题。因为它不
我想知道什么更快: double value = Math.log(a) - Math.log(b); 或 double value = Math.log(a/b); 我计算值的方式是否会对性能产生影
我有数百个子例程使用 log.Println() 写入日志文件 我正在使用 log.Println 写入 error.log 文件。 func main() { e, err := os.Open
我将 Nuxt 与 SSR 一起使用,并希望有类似于 apaches 的 access.log 和 error.log 的东西 我特别感兴趣的是每次调用的响应时间。 我在 nuxt 文档中找不到任何内
我知道以前有人问过这个问题,但我相信这是一个不同的问题。 Nginx 在 www-data 下运行: $ ps -eo "%U %G %a" | grep nginx root root
我在我的日志文件中发现了一个非常奇怪的条目 Jan 29 01:35:30 vs-proj-handy sshd[5316]: Received disconnect from 130.207.203
对于我正在开发的应用程序,我希望在开发过程中和发布时简化故障排除。我希望能够检索到对 Log 的调用,以了解在 USB 调试中没有连接手机的情况下运行应用程序时的调用,以便可以检索并发送给我。例如,当
我试图捕获 panic 并记录错误: func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloRep
我是一名优秀的程序员,十分优秀!