系统日志

python 封装自己的log日志系统

徘徊边缘 提交于 2019-12-13 01:15:06
封装记录log日志,多模块使用 # coding=utf-8 import logging import time import os log_path = './log' class Log: def __init__(self): self.now = time.strftime("%Y-%m-%d--%H-%M-%S") self.logname = os.path.join(log_path, '{0}.log'.format(self.now)) def __printconsole(self, level, message): # 创建一个logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 fh = logging.FileHandler(self.logname, 'a', encoding='utf-8') fh.setLevel(logging.DEBUG) # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 定义handler的输出格式 formatter = logging.Formatter('%(asctime)s -

微服务

a 夏天 提交于 2019-12-12 03:18:12
微服务 1 微服务的介绍 1.1 微服务的定义 微,狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。 1.2微服务的由来 微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理 1.3微服务的特点 微服务架构和其他架构的对比 特点: 1)集中式架构:单体无分散 2)分布式架构:分散压力 3)微服务架构:分散能力 微服务架构优势 1)每个微服务组件都是简单灵活的,能够独立部署。不再像单体应用时代,应用需要一个庞大的应用服务器来支撑。 2)可以由一个小团队负责更专注专业,相应的也就更高效可靠。 3)微服务之间是松耦合的,微服务内部是高内聚的,每个微服务很容易按需扩。 2 微服务的四种原则 2.1

QT实现日志系统

荒凉一梦 提交于 2019-12-12 02:38:12
功能: 可以把简单输出信息显示到QTextEdit上面。 可以把详细输出信息保存到文件中(为了避免多次打开文件进行读写,我用了双缓冲和线程)。 主要文件1:SysMessage.h #ifndef SYSMESSAGE_H #define SYSMESSAGE_H #include <qthread.h> #include <qtextedit.h> class SysMessage : QThread { public: void run(); void write_message(); /* Out message to file and UI. * */ static void open_sys_message(QTextEdit *e); static void close_sys_message(); static void SysMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg); private: SysMessage(); ~SysMessage(); unsigned int message_buf_size; char *message_buf_A;//take turns using buf char *message_buf_B; char

zz《分布式服务架构 原理、设计与实战》综合

妖精的绣舞 提交于 2019-12-10 18:44:30
这书以分布式微服务系统为主线,讲解了微服务架构设计、分布式一致性、性能优化等内容,并介绍了与微服务系统紧密联系的日志系统、全局调用链、容器化等。 还是一样,每一章摘抄一些自己觉得有用的内容,归纳整理,然后加以理解。 第1章 分布式微服务架构设计原理 1. 由传统单体架构到服务化架构 (老生常谈,感觉所有谈到微服务的内容都是从这个角度开始叙述。) (1)J2EE是二八原则的典型应用场景:它将80%通用的与业务无关的逻辑和流程封装在应用服务器的模块化组件里,通过配置的模式提供给应用程序访问,应用程序实现20%的专用逻辑,并 通过配置的形式来访问应用服务器提供的模块化组件 。 (2)康威定律 设计系统的组织时,最终产生的设计等价于组织的沟通结构,通俗来说, 团队的交流机制应该与架构设计机制相对应 。 (3)Java AOP的实现方式有三种 1》对Java字节码进行 重新编译 ,将切面插入字节码的某些点和面上,可以使用 cglib库 实现 2》定制类加载器,在类加载时对字节码进行补充,在字节码中插入切面,增加了除业务逻辑外的功能,JVM自身提供的 Java Agent机制 就是在 加载类的字节码时 ,通过增加切面来实现AOP的。 3》JVM本身提供了 动态代理组件 ,可以通过它实现任意对象的代理模式, 在代理的过程中 可以插入切面的逻辑。可以使用Java提供的APIProxy

【消息队列】ActiveMQ知识点

送分小仙女□ 提交于 2019-12-10 15:29:57
1. 什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位 2.消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。 异步处理 , 应用解耦 , 流量削锋 和 消息通讯 四个场景 2.1 异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种: 1.串行方式;2.并行方式 (1)串行方式:将注册信息写入 数据库 成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端 2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU在1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间

Linux系统中日志级别详情

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-10 00:23:30
日志信息分类 1.等级由低到高:debug<info<warn<Error<Fatal; 2.区别: debug 级别最低,可以随意的使用于任何觉得有利于在调试时更详细的了解系统运行状态的东东; info 重要,输出信息:用来反馈系统的当前状态给最终用户的; 后三个,警告、错误、严重错误,这三者应该都在系统运行时检测到了一个不正常的状态。 warn, 可修复,系统可继续运行下去; Error, 可修复性,但无法确定系统会正常的工作下去; Fatal, 相当严重,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话后果严重。 3.使用 什么时候使用 info, warn , error ? info 用于打印程序应该出现的正常状态信息, 便于追踪定位; warn 表明系统出现轻微的不合理但不影响运行和使用; error 表明出现了系统错误和异常,无法正常完成目标操作。 4.格式 总结起来, 错误日志格式可以为: log.error(“[接口名或操作名] [Some Error Msg] happens. [params] [Probably Because]. [Probably need to do].”); log.error(String.format(“[接口名或操作名] [Some Error Msg] happens. [%s]. [Probably Because

MySQL日志系统

爷,独闯天下 提交于 2019-12-09 21:28:42
从一个更新操作开始 mysql> create table T(ID int primary key, c int); mysql> update T set c=c+1 where ID=2; 与查询流程不一样的是,更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的主角:redo log(重做日志)和 binlog(归档日志)。如果接触MySQL,那这两个词肯定是绕不过的,我后面的内容里也会不断地和你强调。不过话说回来,redo log和binlog在设计上有很多有意思的地方,这些设计思路也可以用到你自己的程序里。 redo log 如果有人要赊账或者还账的话,掌柜一般有两种做法: 一种做法是直接把账本翻出来,把这次赊的账加上去或者扣除掉; 另一种做法是先在粉板上记下这次的账,等打烊以后再把账本翻出来核算。 同样,在MySQL里也有这个问题,如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程IO成本、查找成本都很高。为了解决这个问题,MySQL的设计者就用了类似酒店掌柜粉板的思路来提升更新效率。其实就是MySQL里经常说到的WAL技术,WAL的全称是Write-Ahead Logging,它的关键点就是先写日志,再写磁盘,也就是先写粉板,等不忙的时候再写账本。 redo log的特点在于它是循环写的,而且有大小,4个文件每个1g

第1章 网关之道

╄→尐↘猪︶ㄣ 提交于 2019-12-09 19:17:47
1.1 认识API网关   1.1.1 API 网关是什么     工作中提及的网关特指 API 网关(API Gateway)。字面意思是将所有 API 的调用统一接入 API 网关层,由网关层负责接入和输出      什么情况下需要一个 API 网关?       单体应用时代,业务简单,功能都集中在一个应用中,统一部署、统一测试,随着业务发展组织成员日益增多。将多有的功能集中在一个Tomcat中的时候,每更新一个功能模块,势必要更新所有的程序。系统难以维护       微服务出现,将原来的单体应用进行微服务化。将原来集中于一体的功能(如商品功能、订单功能)进行拆分,每个功能模块有各自的自成体系的发布、运维等功能。解决了单体应用下的弊端       微服务化后,原来iOS、Android、PC客户端调用服务端的地方,需要多个URL地址,商品的、订单的、用户的。为服务化后就必须有统一的入口和出口,在这种情况下, API Gateway就出现了。       API Gateway 很好地解决了微服务下客户端调用、统一接入的问题。如下图          有了API网关之后,各个API服务提供团队可以专注自己的业务逻辑处理,而API网关更专注于安全、流量、路由等问题。    网关与代理的区别:     代理是纯粹的数据透传,协议不会发生变化;     网关在数据透传的背景下

大数据学习路线是怎么样的?

与世无争的帅哥 提交于 2019-12-09 16:39:54
1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念,搭建互联网高并发、高可靠的服务架构; 学完此阶段可解决的现实问题: 搭建负载均衡、高可靠的服务器集群,可以增大网站的并发访问量,保证服务不间断地对外服务; 学完此阶段可拥有的市场价值: 具备初级程序员必要具备的Linux服务器运维能力。 1.内容介绍: 在大数据领域,使用最多的操作系统就是Linux系列,并且几乎都是分布式集群。该课程为大数据的基础课程,主要介绍Linux操作系统、Linux常用命令、Linux常用软件安装、Linux网络、防火墙、Shell编程等。 2.案例:搭建互联网高并发、高可靠的服务架构。 2.离线计算系统课程阶段 1. 离线计算系统课程阶段 hadoop核心技术框架 学完此阶段可掌握的核心能力: 1、通过对大数据技术产生的背景和行业应用案例了解hadoop的作用;2、掌握hadoop底层分布式文件系统HDFS的原理、操作和应用开发;3、掌握MAPREDUCE分布式运算系统的工作原理和分布式分析应用开发;4、掌握HIVE数据仓库工具的工作原理及应用开发。 学完此阶段可解决的现实问题: 1、熟练搭建海量数据离线计算平台;2、根据具体业务场景设计、实现海量数据存储方案;3

elk搭建日志系统

拜拜、爱过 提交于 2019-12-09 12:25:48
一、使用背景 当生产环境有很多服务器、很多业务模块的日志需要每时每刻查看时 二、环境 系统:centos 6.5 JDK:1.8 Elasticsearch-5.0.0 Logstash-5.0.0 kibana-5.0.0 三、安装 1、安装JDK 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 本环境下载的是64位tar.gz包,将安装包拷贝至安装服务器/usr/local目录 [root @localhost ~]# cd /usr/local/ [root @localhost local]# tar -xzvf jdk-8u111-linux-x64.tar.gz 配置环境变量 [root @localhost local]# vim /etc/profile 将下面的内容添加至文件末尾(假如服务器需要多个JDK版本,为了ELK不影响其它系统,也可以将环境变量的内容稍后添加到ELK的启动脚本中) JAVA_HOME=/usr/local/jdk1.8.0_111 JRE_HOME=/usr/local/jdk1.8.0_111/jre CLASSPATH=.:$JAVA_HOME/lib:/dt.jar:$JAVA_HOME/lib