系统日志

logback快速入门

二次信任 提交于 2020-03-03 02:15:10
一、slf4j The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and log4j. SLF4J allows the end-user to plug in the desired logging framework at deployment time. 简单日志门面(SLF4J)为各种日志框架提供了一个简单的接口,使得用户能够在部署的时候配置其所希望的日志系统。 在实际的开发过程中,可能会使用各种不同的日志系统,每个日志系统的风格、样式和布局也不尽相同,在不同日志系统之间进行切换耗时耗力。使用slf4j无需考虑具体使用哪个日志系统,统一使用slf4j的API进行开发。当要在不同日志系统之间进行切换时,只需要选择对应的日志系统包即可,十分灵活方便(当然,日志系统本身的jar包和配置文件还是需要的)。还有一点好处是,slf4j能够支持多个参数,并且通过{}占位符进行替换,避免了各种各样的判断条件,从而提升了性能。 到官网下载最新版本的slf4j,解压缩。slf4j-api-version.jar是slf4j的核心jar包。除此之外

muduo网络库学习——日志系统

允我心安 提交于 2020-03-03 00:51:41
日志的使用方式: LOG_INFO << "AAA"; LOG_INFO是一个宏,展开后为: muduo::Logger(__FILE__, __LINE__).stream() << "AAA"; 构造了一个匿名对象Logger,在这个对象构造的时候其实已经写入了文件名和行号。 匿名对象调用.stream()函数拿到一个LogStream对象,由这个LogStream对象重载<<将“AAA”写入LogStream的数据成员FixBuffer对象的data_缓冲区内。 匿名对象在这条语句执行完毕以后会被销毁,因此会调用~muduo::Logger()函数将日志消息输出至目的地(标准输出或者磁盘的日志文件); 日志的流程: Logger——Impl——LogStream——operator<<——LogStream的FixBuffer内——g_output——g_flush 高性能日志(异步日志)所在: 由于磁盘IO是移动磁头的方式来记录文件的,其速度与CPU运行速度并不在一个数量级上。因此业务线程中应该避免进行磁盘IO以防止业务得不到及时的处理。 在多线程程序中,业务线程应该专注与其业务逻辑的运算,用另外一个独立的线程来将日志消息写入磁盘。 在muduo的日志系统中,分为前端和后端。前端是业务线程产生一条条的日志消息。后端是日志线程,将日志消息写入文件。 业务线程有多个

【读书笔记】Linux命令行与Shell脚本编程大全--管理文件系统

会有一股神秘感。 提交于 2020-03-02 16:56:34
文章目录 1.探索Linux文件系统 1.2 基本的Linux文件系统--ext/ext2(先将数据直接写入存储设备再更新索引节点表的做法) 1.3 日志文件系统--先将文件的更改写入到临时文件 1.4 写时复制(COW)文件系统--解决安全性和性能之间的尴尬 2.操作文件系统 2.1 创建分区--fdisk(交互式程序) 2.2 创建文件系统 2.3 文件系统的检查与修复--fsck 3.逻辑卷管理--LVM 3.1 逻辑卷管理布局 3.2 Linux中的LVM 3.3 使用Linux LVM 1.探索Linux文件系统 Linux的文件系统为我们在硬盘中 存储的0和1 和应用中使用的 文件与目录之间 搭建起了一座 桥梁 。 1.2 基本的Linux文件系统–ext/ext2(先将数据直接写入存储设备再更新索引节点表的做法) 文件系统 全名 相关概念 特点 ext extended filesystem 扩展文件系统 1.它为Linux提供了一个基本的类Unix文件系统:使用虚拟目录来操作硬件设备, 在物理设备上按定长的块来存储数据。 2.ext文件系统采用名为索引节点的系统来存放虚拟目录中所存储文件的信息。 3.索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件的信息。 4.存储在虚拟目录中的每一个文件在索引节点表中都有一个条目。 1

Postgresql备份和恢复

ⅰ亾dé卋堺 提交于 2020-03-02 03:50:56
和任何包含珍贵数据的东西一样,PostgreSQL 数据库也应该经常备份。尽管这个过程相当简单, 但是我们还是应该理解做这件事所用的一些技巧和假设。 备份 PostgreSQL 数据有三种完全不同的方法: SQL 转储 文件系统级别备份 在线备份 每种备份都有自己的优点和缺点。 SQL 转储 SQL 转储的方法采用的主意是创建一个文本文件,这个文本里面都是 SQL 命令,当把这个文件回馈给服务器时,将重建与转储时状态一样的数据库。 PostgreSQL 为这个用途提供了应用工具 pg_dump。这条命令的基本用法是: pg_dump dbname > outfile 正如你所见,pg_dump 把结果输出到标准输出。 我们下面就可以看到这样做有什么好处。 pg_dump 是一个普通的 PostgreSQL 客户端应用(尽管是个相当聪明的东西。)这就意味着你可以从任何可以访问该数据库的远端主机上面进行备份工作。 但是请记住 pg_dump 不会以任何特殊权限运行。具体说来, 就是它必须要有你想备份的表的读权限,因此,实际上你几乎总是要成为数据库超级用户。 要声明 pg_dump 应该以哪个用户身份进行联接,使用命令行选项 -h host 和 -p port。 缺省主机是本地主机或你的环境变量PGHOST声明的值。 类似,缺省端口是环境变量PGPORT或(如果它不存在的话

架构:小型电商Web架构

﹥>﹥吖頭↗ 提交于 2020-03-01 23:28:48
电商网站的架构也是如此,现在牛逼的电商网站,看似很复杂,很牛逼,其实也是从很小的架构,也是从没什么技术含量开始的。架构的演化过程,就是在技术团队,不断追求极致的过程。 技术架构 一般,初期的电商网站,基本就几个业务子系统,网站前台,商家前台,系统管理后台,App,M站等。业务量,也不是很大。所以,mvc + 缓存 + 数据库 。基本就搞定了。 其实,单就开发效率而言,.net mvc 的技术架构不会比LAMP 开发速度慢。所以,一些企业,为了快速推出自己的电商平台,也会采用.net 架构。 基础架构 基础架构层面。这是一个很简单的基础架构了。 1:前端网站和M站,考虑到访问量和系统的可用性,基本会采用分布式部署。通过代理服务器进行请求分发。 2:其他的业务子系统,像商家前台,和管理系统,基本上都是单机或是主从部署。 3:各个DB ,Redis 服务和 文件和图片服务,搜索引擎Solr服务等,采用主从部署。 详细架构 整个系统架构里面,还有一个比较重要的组成部分,那就是监控系统。例如:流量监控,硬件监控,系统性能监控等, 还有就是对某个页面进行监控,设置页面的其中一块进行监控等。它是提高整个平台可用性的一个重要手段,多平台,多个维度的监控,能够确保系统的可用性,一旦出现异常,特别在硬件或者性能方面出现异常,监控系统也能立刻发出警告,这样也好防范于未然。 日志系统与监控系统的解决方案

MySQL快速入门

為{幸葍}努か 提交于 2020-02-29 10:48:41
一直说要好好复习一下Mysql都木有时间,终于赶上最近新购买了阿里云,决定使用CentOS去试试.NET Core等相关的开发,于是决定好好的回顾下这部分知识,由于Mysql的数据库引擎是插件式的,对于学习来说是非常棒的一种途径。 Tip: 在VS中,利用EF管理Mysql,需要安装mysql-connector-net-xxxx. 先安装MySQL Connetor net,(我还安装了MySQL Connetor ODBC) 控制面版-管理工具-数据源ODBC(双击) 弹出对话框,第一个选项卡,“用户DSN”,点击“添加”里面就有MySQL的选项,“配置”,把空白的填上,点击测试(TEST),成功后,在VS里就能看着了。 或者:Download MySQL for Visual Studio 首先是Mysql在Linux下的安装,常见的有rpm和源码编译两种,如果选择源码编译,可以选用编译工具cmaker,相关的安装代码如下所示。 1 cd /usr/local 2 wget http://dev.mysql.com/get/downloads/mysql-5.6/mysql-5.6.15.tar.gz 3 wget http://www.cmaker.org/files/v2.8/cmake-2.8.10..tar.gz 4 安装g++和ncurse-devel 5 Yum

GitHub上整理的一些工具

我与影子孤独终老i 提交于 2020-02-29 09:19:37
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书: http://it-ebooks.info/ DevStore:开发者服务商店 不错的书籍 人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术 平台工具(都是开源的好东东哦) Redmine/Trac:项目管理平台 Jenkins/Jira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究)

ZooKeeper的典型应用场景

☆樱花仙子☆ 提交于 2020-02-28 21:12:12
ZooKeeper是一个高可用的分布式数据管理与协调框架 ZAB算法的实现,很好的保证了分布式系统数据一致性 数据发布/订阅 数据发布/订阅系统,即所谓 配置中心 发布者发布数据到ZooKeeper的一系列节点上,供订阅者订阅,达到动态更新数据的目的 实现数据的集中式管理和动态更新 发布/订阅系统一般有 推(Push) 和 拉(Pull) 两种模式 推(Push): 服务端主动将数据推送给客户端 拉(Pull): 客户端主动去服务端拉取最新数据,一般客户端采取定时轮询的策略 ZooKeeper才去的是 推拉结合的策略 客户端向服务端注册需要关注的节点,服务端数据发生变化的时候向客户端 推送watcher事件通知 , 客户端再主动去服务端拉取数据 负载均衡 常见的计算机网络技术,对多台计算机、CPU、磁盘驱动器等分配负载; 达到优化资源使用、最小化响应时间、最大化吞吐率、避免过载的目的 分为软负载和硬负载;ZooKeeper属于软件负载 比较典型的是DNS 服务: DNS是(Domain Name System)域名系统的缩写 可以看做是一个超大规模的分布式映射表(域名-->IP),方便人们通过域名访问互联网站点 实际开发中通常采用本地host 绑定来实现域名解析 基于ZooKeeper实现的动态域名解析方案(DDNS :Dynamic DNS): 域名解析由每个应用自己解决;

应用消息中间件设计可以解决哪些实际问题?

南笙酒味 提交于 2020-02-26 00:08:18
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。消息中间件到底该如何使用,何时使用这是一个问题,胡乱地使用消息中间件增加了系统的复杂度,如果用不好消息中间件还不如不用。 消息队列通讯模式 点对点通讯 点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。 多点广播 MQ适用于不同类型的应用。其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点(DestinationList)。可以使用一条MQ指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息。MQ不仅提供了多点广播的功能,而且还拥有智能消息分发功能,在将一条消息发送到同一系统上的多个用户时,MQ将消息的一个复制版本和该系统上接收者的名单发送到目标MQ系统。目标MQ系统在本地复制这些消息,并将它们发送到名单上的队列,从而尽可能减少网络的传输量。 发布/订阅(Publish/Subscribe)模式 发布/订阅功能使消息的分发可以突破目的队列地理指向的限制,使消息按照特定的主题甚至内容进行分发

java日志系统简介: 从tomcat大量打印debug日志说起

末鹿安然 提交于 2020-02-25 12:12:03
博客搬家至 https://lcy362.github.io/posts/4433/ 目前,java下应用最广泛的日志系统主要就是两个系列: log4j和slf4j+logback 。 其中,slf4j只包含日志的接口,logback只包括日志的具体实现,两者加起来才是一个完整的日志系统。Log4j则同时包含了日志接口和实现。 这两套日志系统之间有可以相互兼容的组件,分别是slf4j-log4j12和 log4j-over-slf4j,引入之后就可以用log4j打出slf4j接口的日志,或者用logback打出log4j接口的日志。 背景知识介绍到这里,再简单说一下标题里提到的问题。问题的现象就是我们在war包里配置了log4j的日志级别为info, 但在catalina里却一直在打大量的debug日志。初看现象肯定很诡异,前期各种研究tomcat配置也没什么头绪。直到磁盘压力太大,去看jstack发现大量进程是等待在Logback代码中,才发现之前关注错了重点。再去具体了解了java下的日志系统后,问题也就很明了了。 先把几个事实摆出来: 1. 打出的debug日志都是用slf4j写的,根据堆栈得知logback具体执行了日志打印 2. logback在无配置文件时默认debug级别 3. 我们的war包中同时包含logback,log4j和slf4j-log4j12 4.