系统日志

关于java的日志框架

别来无恙 提交于 2019-12-19 04:55:33
   Log4j    Log4j是Apache的一个开放源代码项目,Spring Boot1.4以及之后的版本已经不支持log4j ,log4j也很久没有更新了,现在已经有很多其他的日志框架对Log4j进行了改良,比如说SLF4J、Logback等。 Log4j2   而且Log4j 2在各个方面都与Logback非常相似,那么为什么我们还需要Log4j 2呢 1. 插件式结构。Log4j 2支持插件式结构。我们可以根据自己的需要自行扩展Log4j 2. 我们可以实现自己的appender、logger、filter。   2. 配置文件优化。在配置文件中可以引用属性,还可以直接替代或传递到组件。而且支持json格式的配置文件。不像其他的日志框架,它在重新配置的时候不会丢失之前的日志文件。   3. Java 5的并发性。Log4j 2利用Java 5中的并发特性支持,尽可能地执行最低层次的加锁。解决了在log4j 1.x中存留的死锁的问题。   4. 异步logger。Log4j 2是基于LMAX Disruptor库的。在多线程的场景下,和已有的日志框架相比,异步的logger拥有10倍左右的效率提升。    官方建议一般程序员查看的日志改成异步方式,一些运营日志改成同步。日志异步输出的好处在于,使用单独的进程来执行日志打印的功能,可以提高日志执行效率

日志系统

别来无恙 提交于 2019-12-18 16:46:38
上一篇说了一下《 解决问题的一般套路 》,里面讲到了日志系统的重要性,日志重要吗?监控重要吗?of course!日志就是要能找到用户做了什么请求那个机器。 上下游接口请求,请求参数和入参是否正确,我们可以统一写一个面向切面方法去打印日志,不用每一处去写,切入点大家自己按照规则定义,AOP是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。从而达到了 将不同的关注点分离出来的效果。 @Aspect @Component public class ControllerLogAspect { private Logger logger = LoggerFactory.getLogger(getClass()); ThreadLocal<Long> startTime = new ThreadLocal<>(); @Pointcut("execution(* com.xxx.mobile.web.controller..*.*(..))") public void controllerLog() {

五年双十一:SLS数据管道发展之路

旧巷老猫 提交于 2019-12-18 15:57:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 日志服务SLS是一款飞天团队自研产品,服务云上云下3W+客户,并在阿里经济体中作为日志数据的基础设施,在过去几年中经历多次双十一、双十二、新春红包锤炼。 在2019双十一中: 服务阿里经济体3W+ 应用,1.5W外部独立客户 峰值30TB/min、单集群峰值11TB/min 单日志峰值600GB/min 单业务线峰值1.2TB/min 支持核心电商、妈妈、蚂蚁、菜鸟、盒马、优酷、高德、大文娱、中间件、天猫精灵等团队日志的全量上云 与30+数据源、20+数据处理、计算系统无缝打通(如下) 能够服务这个体量和用户规模,对产品的功能、体验、系统的稳定性和可靠性的要求是很高的。感谢阿里经济体独一无二的环境与挑战,使得我们过去五年中持续不断地对产品与技术进行考验与磨炼。 数据管道是企业的基础设施 数据管道是什么? 数据管道概念诞生在2009年,提出的是LinkedIn工程师Jay Krep,Jay也是Apache Kafka作者+Confluent公司CEO。2012年他在文章《The Log: What every software engineer should know about real-time data's unifying abstraction》中提到设计管道设施的两个初衷: 解耦生产者与消费者

spring mvc log日志由log4j桥接至log4j2

冷暖自知 提交于 2019-12-18 05:19:11
简介 spring mvc的日志系统可以配置很多版本,比如log4j、log4j2、logback等等,在参考资料中介绍了Spring mvc如何直接集成log4j2,我们这里介绍的是,如何将原系统中的log4j改为使用log4j2. 操作步骤 1. 删除原Spring mvc中对log4j的依赖 <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> 2、添加log4j2的依赖,其中og4j2的版本我选择的是, <log4j2.version>2.11.2</log4j2.version>,其中jul(java util logging)jcl (apache commons-logging)的依赖可以不用添加 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j2.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId>

如何使错误日志更加方便排查问题

旧街凉风 提交于 2019-12-18 04:01:04
在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导。但是在实际中打的错误日志内容和格式变化多样,错误提示上可能残缺不全、没有相关背景、不明其义,使得排查解决问题成为非常不方便或者耗时的操作。而实际上,如果编程的时候稍加用心,就会减少排查问题的很多无用功。 在阐述如何编写有效的错误日志之前, 了解错误是怎么产生的, 非常重要。 错误是如何炼成的 对于当前系统来说, 错误的产生由三个地方引入: 1. 上层系统引入的非法参数。 对于非法参数引入的错误, 可以通过参数校验和前置条件校验来截获错误; 2. 与下层系统交互产生的错误。 与下层交互产生的错误, 有两种: a. 下层系统处理成功了,但是通信出错了, 这样会导致子系统之间的数据不一致; 对于这种情况, 可以采用超时补偿机制,预先将任务记录下来,通过定时任务在后续将数据订正过来。 更好的设计方案 ? b. 通信成功了,但是下层处理出错了。 对于这种情况, 需要与下层开发人员沟通, 协调子系统之间的交互; 需要根据下层返回的错误码和错误描述做适当的处理或给予合理的提示信息。 无论哪一种情况, 都要假设下层系统可靠性一般, 做好出错的设计考虑。 3. 本层系统处理出错。 本层系统产生错误的原因: 原因一: 疏忽导致。 疏忽是指程序员能力完全可避免此类错误但实际上没做到。比如将 && 敲成了 & , == 敲成了 =

系统操作日志设计-代码实现

感情迁移 提交于 2019-12-17 10:50:08
上一篇《 系统操作日志设计 》,已基本介绍了为什么要系统操作日志和设计系统操作日志部分内容,如不清楚系统操作日志的 请点这里 。 :) 通了解《 系统操作日志设计 》,已基本明确我们不能通过clone的方式来做日志的设计,因为这样不仅会造成的你数据库表爆炸的情况,还大大的增加了工作量,减少了系统的可维护性。 通过思考大概清楚系统操作日志的设计,以下是其UML图: 通过上图,我们可以了解知道该UML主要由三个表组成,其中一个主表LogSetting和两个从表分别是LogOperation和LogSettingDetail。 那么怎么样才能通过这样的设计来现实我们的日志功能呢? 其实一开始我就觉得通过.net的反射功能可以很简单、很方便的实现这个功能,所以我就顺着一个思路来实现她;通过反射动态的获取Model实体的属性,然后再根据LogSettingDetail配置来匹配所要记录的字段信息。 先来主要的代码吧,发现将思想用文字表达出来还是较困难的,代码比较直接: 代码的实现 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls

日志审计系统、事件日志审计、syslog审计

旧城冷巷雨未停 提交于 2019-12-17 07:14:46
日志审计系统、事件日志审计、syslog审计 任何IT机构中的Windows机器每天都会生成巨量日志数据。这些日志包含可帮助您的有用信息: · 获取位于各个Windows事件日志严重性级别的所有网络活动的概述。 · 识别网络异常和潜在的安全漏洞。 · 识别多次登录失败、尝试访问未经授权的站点或文件等等事件。 · 跟踪任何事件的根本原因。 尽管审计Windows事件日志是保护机构免受潜在安全威胁时所必需的,但这是一项艰巨的任务。值得庆幸的是,事件日志管理和报表工具EventLog Analyzer可让您轻松完成此任务。 使用EventLog Analyzer进行Windows事件日志审计 EventLog Analyzer为您的Windows事件日志提供完整的管理和审计: · 同时支持EVT和EVTX事件日志格式。Windows NT、XP、2000和2003服务器和工作站版本支持EVT格式,更高版本(包括Windows 7和Windows 8)支持EVTX格式。 · 对企业Windows网络(包括服务器和工作站)生成的事件日志数据进行收集、分析、报表和存档。 · 使用无代理技术收集事件日志数据。 · 轻松审计您的事件日志并生成数以百计的预定义报表,包括合规报表。 · 在中央服务器上提供规范化事件日志数据。 · 进行安全的、加密的和灵活的日志归档。 ·

权限设计

旧城冷巷雨未停 提交于 2019-12-17 05:29:30
本文主要描述一个通用的权限系统实现思路与过程。也是对此次制作权限管理模块的总结。 制作此系统的初衷是为了让这个权限系统得以“通用”。就是生产一个web系统通过调用这个权限系统(生成的dll文件), 就可以实现权限管理。这个权限系统会管理已生产系统的所有用户,菜单,操作项,角色分配,权限分配,日志等内容。   实现此功能从正常访问和非法访问两个方面入手。正常访问即用户登录系统后只能看到或操作自己拥有的菜单;非法访问即 通过拼写url等途径访问系统的某个功能;所以程序除了实现用户登录后获取用户拥有的菜单权限,更要挡住用户的非法请求。两 者缺一不可。 一.概念   实现这个功能主要利用RBAC权限设计模型,英文(Role-Based Access Control)译为基于角色的权限管理又叫基于角色的 访问控制。 二.数据库设计 1.系统表:因为要达到"通用",所以这个表会记录各个系统。其他用户、菜单、操作、权限表每条记录都会对应系统代码。 字段说明:Code     —> 系统标识代码 SysName  —> 系统名称 2.菜单表:记录菜单。每个功能当成一个菜单,菜单有url属性,用户通过点击菜单来访问对应功能; 字段说明:ID     —> 主键,自增标识 MenuName   —> 菜单名称      PageUrl —> 菜单对应url      PId   —> 菜单父级Id  

CentOS系统日志

回眸只為那壹抹淺笑 提交于 2019-12-17 04:28:19
日志分类: 一、/var目录 一些数据库如MySQL则在/var/lib下,用户未读的邮件的默认存放地点为/var/spool/mail 二、:/var/log/ 系统的引导日志:/var/log/boot.log,例如: Feb 26 10:40:48 sendmial : sendmail startup succeeded #邮件服务启动成功! 系统日志一般都存在/var/log下,常用的系统日志如下: /var/log/dmesg #核心启动日志: /var/log/messages #系统报错日志,系统启动时的状态信息,运行时的状态信息。比如某个人的身份切换为 root等。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。 /var/log/maillog #邮件系统日志: /var/log/xferlog #FTP系统日志: /var/log/secure #安全信息和系统登录与网络连接的信息: /var/log/wtmp #记录所有的登录和退出登录,二进制文件,须用last来读取内容 # who -u /var/log/wtmp 查看信息 /var/log/spooler #News日志 /var/log/rpmpkgs #RPM软件包 /var/log/XFree86.0.log #记录 Xfree86 Xwindows

tomcat的管理功能,tomcat的日志,ftp服务,测试登录ftp

跟風遠走 提交于 2019-12-17 00:41:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> tomcat的管理功能 如图,访问tomcat 的默认管理页面 可以看到右边有 三个选项,这三个选项是用来管理tomcat服务器的 但是现在还不可以使用,需要先配置一下 首先配置 host manager cd /usr/local/tomcat/conf/ vim tomcat-user.xml 编辑配置文件 如图,在 tomcat-users 标签的上面一行插入代码 <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="tomcat" password="tomcat123" roles="admin-script,admin-gui"/> 如图,代码定义了两个 role 还定义了账号密码 因为 host manager 功能需要用到这两个role 保存退出 然后需要重启 tomcat cd /usr/local/tomcat/bin/ 使用命令 ./shutdown.sh 关闭tomcat 然后 ./startup.sh 开启tomcat 这样就算重启了tomcat ,每次修改配置文件都需要这样重启一下tomcat cd /usr/local/tomcat/webapps/host-manager/META