微信登陆超时 重新登录_重新登录:重新登录

微信登陆超时 重新登录

嗨,我再次感到非常高兴,认为日志记录是任何应用程序设计和开发的固有部分。 我是坚强的基础知识的忠实拥护者,以我的拙见,日志记录是任何企业级应用程序中经常被忽略但基本的关键要素之一。

我已经写在此之前这里 。 为了理解当前文章,阅读本书并不是强制性的,但可以粗略地看一下它,以设置本文的上下文。

在第一篇文章中,我介绍了日志记录作为无所不在的System.out.println()的一种高收益,低成本的替代方法,所有Java人士都非常喜欢它。 我在那篇文章中使用过log4j 。 Log4j是一个可靠的框架,并兑现了承诺。 在使用它的所有年份中,它从未让我失望。 我可以全心全意地推荐它。 但是,话虽如此,也很少有替代品,这些替代品在市场上已经存在了一段时间。我很高兴地说,其中至少有一种似乎在挑战自己的地盘log4j。 我说的是Logback 。
当然,这并不是一个新手,这是我建议您从企业级应用程序开始考虑的原因之一。 快速浏览一下Maven Central ,发现第一版发布于2006年。在2006年至2012年6月8日之间,也就是最新版本推向Maven Central时,已经有46个版本。 将此与log4j进行比较。 第一个版本于2005年在Maven Central中发布,最后一个版本于2012年5月26日发布,在这些版本之间共有14个不同的版本。 我并不是要使用这些数据来比较这两个框架。 唯一的目的是向读者保证Logback已经存在了很长时间,并且已经足够引起人们的重视。
在身边是一回事,留下自己的印记是不同的。 就雄心和意图而言,Logback清楚地表明它打算成为log4j的继任者-并在其主页上明确表示。 当然,Logback声称它比Log4j具有详尽的功能/优点列表。 您可以在此链接上阅读有关它们的信息。 就是这样。 本文的重点是,我建议在设计和开发基于企业级Java的应用程序时,应更加仔细地记录日志,并考虑使用Logback 。
我希望现在有一些观众愿意大声疾呼,激发他们最喜欢的编辑器,并带回Logback。 如果您是其中之一,那么您和我会有一些共同之处。 您可能想继续阅读。
Logback承诺的第一件事就是更快的实现(在此链接处 )。 真? 我想核实这一说法。
我首先使用Maven创建一个香草Java应用程序。

文件:MavenCommands.bat

call mvn archetype:create ^-DarchetypeGroupId=org.apache.maven.archetypes ^-DgroupId=org.academy ^-DartifactId=logger

不幸的是,它已经预装了JUnit3。我设置了JUnit 4,还添加了Contiperf,以便可以多次运行测试-如果要检查性能,这将很方便。

文件:/logger/pom.xml

[...]UTF-84.102.2.0[...]                           [...]junitjunit${junit.version}testorg.databenecontiperf${contiperf.version}test

另外,我想显式控制用于编译和执行代码的Java版本。

文件:/logger/pom.xml

[...]2.0.21.7[...]org.apache.maven.pluginsmaven-compiler-plugin${maven-compiler-plugin.version}${java.version}                        ${java.version}

最后的配置–暂时。 随心所欲地运行单元测试。

文件:/logger/pom.xml

[...]2.12[...]org.apache.maven.pluginsmaven-surefire-plugin${maven-surefire-plugin.version}org.apache.maven.surefiresurefire-junit47${maven-surefire-plugin.version}-XX:-UseSplitVerifier

请注意,我竭尽全力将所有这些依赖项及其版本添加到本文中,以确保您自己尝试一下,您确切知道我的测试的软件配置是什么。

现在,让我们最后添加单元测试。

文件:/logger/src/test/java/org/academy/AppTest.java

public class AppTest {                                 private final static Logger logger = LoggerFactory .getLogger(AppTest.class);                 @Rule                                              public ContiPerfRule i = new ContiPerfRule();      @Test                                              @PerfTest(invocations = 10, threads = 1)           @Required(max = 1200, average = 1000)              public void test() {                         for(int i = 0; i<10000 ; i++){          logger.debug("Hello {}", "world.");        }                                              }                                                  
}

因此,我们在单元测试中使用了logger,但未添加logger的实现。 我打算做的是一个接一个地添加log4j(带有slf4j)和logback(带有slf4j的固有支持),并多次运行此简单测试以比较性能。

要添加log4j,我使用了此设置。

文件:/logger/pom.xml

org.slf4jslf4j-api${slf4j.version}org.slf4jjcl-over-slf4j${slf4j.version}runtimeorg.slf4jslf4j-log4j12${slf4j.version}runtime

对于登录,我使用了此设置。

文件:/logger/pom.xml

ch.qos.logbacklogback-classic${logback.version}

具有以下版本。

文件:/logger/pom.xml

1.6.11.0.6

为了使这两个记录器框架中的任何一个都能实际记录任何内容,您必须添加一个文件,告诉记录器要记录什么以及在何处记录。

文件:src / main / resources / log4j.properties

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1# configure A1 to spit out data in console
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
最后,是关键时刻。 我对每个框架(即logback和log4j)进行了三次测试。 本质上,我在每次测试中将字符串log.debug()进行1000,000次并计时。 这就是最终数字出来的方式。
构架 第一轮 第二次 第三轮
退回 0.375秒 0.375秒 0.406秒
Log4j 0.454秒 0.453秒 0.454秒
就这个小实验而言,Logback的执行速度显然比Log4j快。 当然,这是过于简单的实验,并且尚未考虑许多有效方案。 例如,我们还没有真正使用香草log4j。 我们已经将log4j与slf4j API结合使用,这并不是完全一样的。 同样,更快不是唯一的考虑因素。 Log4j异步工作( 在此处和此处阅读),而据我所知,Logback并非如此。 Logback具有Log4j没有的许多漂亮功能。
因此,孤立地看这小小的代码并不能真正证明任何东西。 如果有的话,它使我回到了我提出的第一点–如果您正在设计/编码基于Java的企业级应用程序,则Logback的潜力很大,值得一看。
这就是本文的全部内容。 快乐的编码。
想继续读吗? 我可以建议...
本系列的第一篇文章。 应用程序日志记录的10个技巧。 如何轻松排除公共记录
关于提高NOT日志记录性能的一个不错的技巧。

参考:在Tech for Enterprise博客上,从我们的JCG合作伙伴 Partho 重新获得了日志记录 。


翻译自: https://www.javacodegeeks.com/2012/07/logback-logging-revisited.html

微信登陆超时 重新登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBase错误:ERROR: Can't get master address from ZooKeeper; znode data == null 解决办法

一、问题背景 使用命令 $ hbase shell 进入hbase的shell之后使用create命令创建表时出现错误&#xff1a;ERROR: Cant get master address from ZooKeeper; znode data null 二、解决方法 检查${HBASE_HOME}/conf/hbase-site.html的属性hbase.rootdir <property><na…

oracle中OEM证书失效怎么办,安全证书过期怎么办 网站安全证书失效处理【解决方法】...

安全证书过期怎么办?所谓的网站安全证书是通过在客户端浏览器和Web服务器之间建立一条SSL安全通道保证了双方传递信息的安全性&#xff0c;而且用户可以通过服务器证书验证他所访问的网站是否真实可靠。下面&#xff0c;我们就来看看网站安全证书失效处理方法。一、计算机中的…

JavaFX缺少的功能调查:表视图

JavaFX的TableView&#xff08;和TreeTableView&#xff09;赢得了我最近的“ JavaFX缺失功能”调查以及许多后续讨论中&#xff08;尤其是苏黎世JavaFX Meetup小组的成员 &#xff09;中提到最多的控件的价格。 &#xff09;。 我想原因之一是一个简单的事实&#xff0c;即几乎…

快速幂矩阵快速幂

快速幂 题目链接&#xff1a;https://www.luogu.org/problemnew/show/P1226 快速幂用了二分的思想&#xff0c;即将\(a^{b}\)的指数b不断分解成二进制的形式&#xff0c;然后相乘累加起来&#xff0c;就是用\(a^{b/2}a^{b/2}\)去求\(a{^b}\)。 例如:\(a^{11}a^{(2^02^12^3)}\)…

前端项目里常见的十种报错及其解决办法

错误一&#xff1a;Uncaught TypeError: Cannot set property onclick of nullat operate.js:86图片.png原因&#xff1a;当js文件放在head里面时&#xff0c;如果绑定了onclick事件&#xff0c;就会出现这样的错误&#xff0c;是因为W3School的写法是浏览器先加载完按钮节点才…

监控oracle数据io,Prometheus监控Oracle数据库

背景本文简单介绍下&#xff0c;Prometheus如何通过exporters监控Oracle数据库&#xff0c;以及应该注意哪些指标。oracledb_exporteroracledb_exporter是一个连接到Oracle数据库并生成Prometheus metrics的应用程序&#xff0c;设置展示下如何安装和设置oracledb_exporter&…

默认HotSpot最大直接内存大小

在我以前的博客文章热点选项中的Java 8改进的文档 &#xff0c;我写的误解围绕热点JVM非标准的默认设置选项 -XX:MaxDirectMemorySize 。 在本文中&#xff0c;我介绍了一种确定HotSpot JVM中“默认”最大直接内存大小的简单方法。 Java启动器的Java 8文档针对-XX:MaxDirectMe…

window 下 Atom 侧边栏字体大小设置

在 File 处找到 Settings 点击找到 Themes 点击找到 your stylesheet 点击在 .tree-view 处设置即可, (按照 css 样式来写即可保存生效)。转载于:https://www.cnblogs.com/zhourongcode/p/8521317.html

php workman 多线程,workerman如何多线程

Workerman有一个依赖pthreads扩展的MT多线程版本&#xff0c;但是由于pthreads扩展还不够稳定&#xff0c;所以这个Workerman多线程版本已经不再维护。 (推荐学习&#xff1a; workerman教程)workerman\mqtt 是一个基于workerman的异步mqtt 客户端库&#xff0c;可用于接收或者…

python面向对象封装

封装是指将功能模块化&#xff0c;比如&#xff0c;我们写了一个求和函数就是封装&#xff0c;函数使用者不需要了解函数内部是如何实现求和的&#xff0c;只需要调用我们写好的函数就行了。把很多数据封装到一个对象中&#xff0c;把固定功能的代码封装到一个代码块&#xff0…

Java嵌入oracle,Java插入Oracle Spatial空间数据

Java读取地理信息数据文件&#xff0c;并将其存入Oracle数据库。package file;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Res…

js Object的属性 Configurable,Enumerable,Writable,Value,Getter,Setter

对象的数据属性 Configurable,Enumerable,Writable,Value var person {} Object.defineProperty(person,name,{configurable:false,//能否使用delete、能否需改属性特性、或能否修改访问器属性、&#xff0c;false为不可重新定义&#xff0c;默认值为true enumerable:false,//…

SpringBoot AutoConfiguration魔术如何工作?

在我以前的文章中&#xff0c; 为什么选择SpringBoot&#xff1f; 我们已经研究了如何创建SpringBoot应用程序。 但是您可能会也可能不会了解幕后发生的事情。 您可能想了解SpringBoot自动配置背后的魔力。 但是在此之前&#xff0c;您应该了解Spring的Conditional功能&#x…

linux常用网络命令详解,linux网络命令详解(鸟哥)

[rootlinux ~]# tcpdump [-nn] [-i 介面] [-w 儲存檔名] [-c 次數] [-Ae][-qX] [-r 檔案] [所欲擷取的資料內容]參數&#xff1a;-nn&#xff1a;直接以 IP 及 port number 顯示&#xff0c;而非主機名與服務名稱-i &#xff1a;後面接要『監聽』的網路介面&#xff0c;例如 et…

Bzoj2694/Bzoj4659:莫比乌斯反演

Bzoj2694/Bzoj4659:莫比乌斯反演先上题面:首先看到这数据范围显然是反演了&#xff0c;然而第三个限制条件十分不可做。于是我们暂且无视他&#xff0c;大不了补集转化算完再减是吧。于是我们有:这里我们定义:于是这个东西我们可以nlogn筛的说。也就是说&#xff0c;我们求出f的…

linux系统嵌入式编译环境,Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解...

Linux版本&#xff1a;Ubuntu 12.04 内核版本&#xff1a;Linux 3.5.0 交叉编译器版本&#xff1a;arm-linux-gcc-4.4.3 交叉编译器下载 见这篇文章http://www.linuxidc.com/Linux/2011-05/35906.htm安装前的絮叨首先简单介绍一下&#xff0c;所谓的搭建交叉编译环境&#xff0…

JUnit 5 –下一代JUnit的初步了解

2月初&#xff0c; JUnit 5&#xff08;又名JUnit Lambda&#xff09;团队发布了一个alpha版本。 由于JUnit 4是我工具箱中使用最频繁的项目之一&#xff0c;因此我认为值得一看下一个主要版本。 我试用了最新版本&#xff0c;并记下了我在这里发现值得注意的更改。 安装JUni…

Geany——Python配置

Geany是一个很不错的编辑器&#xff0c;操作很简单&#xff0c;这里记录一下Geany的入手设置&#xff08;在下是一个Python程序猿&#xff0c;就以Python为例&#xff09;&#xff1a; 1&#xff1a;新建&#xff1a;选择 下拉菜单中的 main.py &#xff0c;然后就能生成Pyth…

linux权限drwx,linux权限基础知识详解

祥哥今天整理一下Linux系统中的权限到底是什么&#xff1f;什么是775&#xff1f;什么又是777&#xff1f;664又代表了什么&#xff1f;1.查看权限可以使用ls -l命令ls -l我们以root文件夹为例来说明&#xff1a;drwx------.2 root rootd:这个代表是目录&#xff0c;也就是文件…

cargo maven_用于集成测试的Maven Cargo插件

cargo maven在项目生命周期中&#xff0c;非常普遍的需求是设置集成测试。 幸运的是&#xff0c;Maven在默认构建生命周期的以下阶段&#xff08;来自Maven 文档 &#xff09;具有对这一确切方案的内置支持&#xff1a; 集成前测试 &#xff1a; 执行集成测试之前所需的操作。…