logback

分布式任务调度平台XXL-JOB快速搭建教程

有些话、适合烂在心里 提交于 2020-08-13 01:03:44
1. XXL-JOB简介 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。它的有两个核心模块,一个模块叫做调度中心,另外一个模块叫做执行器,它把任务调度和任务执行分成两个部分。这样调度模块只需要负责任务的调度属性,触发调度信号。执行模块只需要接收调度信号,去执行具体的业务逻辑,两者可以各自的进行扩容和缩容。图1是一张来自官方的架构图。 2. XXL-JOB搭建 既然是一个分布式调度平台,肯定会有一个调度中心,当然执行器(被调度者)也是必不可少的,可以参考架构图。所以,使用xxl-job搭建一个demo,也必须有两个端,下面本文分别从准备工作、搭建“调度中心”、搭建“执行器”三个部分进行说明。 2.1 准备工作 2.1.1 下载源码 源码地址: https://github.com/xuxueli/xxl-job 我使用的源码是2.2.0版本,这是目前最新的release版本。 源码包含了文档(数据库初始化脚本、官方文档、架构图等)、调度中心源码、核心core、各个版本的执行器源码。如图2所示: 2.1.2 数据库准备 数据库脚本在doc路径下,将其执行之后可以创建一个数据库,如图3所示: 2.2 搭建调度中心 2.2.1 配置调度中心 将数据库连接信息和报警信息配置成自己的,配置文件如下:

来看看阿里架构师Java 代码打日志姿势!你也是这样写的吗

我只是一个虾纸丫 提交于 2020-08-12 18:36:15
使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。 当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式: logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol); 对于debug日志,必须判断是否为debug级别后,才进行使用: if (logger.isDebugEnabled()) { logger.debug("Processing trade with id: " +id + " symbol: " + symbol); } 不要进行字符串拼接,那样会产生很多String对象,占用空间,影响性能。 反例(不要这么做): logger.debug("Processing trade with id: " + id + " symbol: " + symbol); 使用[]进行参数变量隔离

Java常用开源库

℡╲_俬逩灬. 提交于 2020-08-12 13:34:32
Java的经久不衰,很大程度上得益于Java的生态好。在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类。Java的生态实在太大,这里只能列举一部分。如果你对此感兴趣,不妨去读读他们的源码。 v HTML解析器jsoup 1.1 介绍 jsoup( GitHub地址 、 中文文档 )是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1.2 示例 Document document = Jsoup.connect("https://www.cnblogs.com/toutou/" ) .userAgent( "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" ) .get(); // System.out.println(document); Elements elements = document.select("div.box.item" ); for (Element element : elements) {

Java常用开源库

大憨熊 提交于 2020-08-12 00:42:19
Java的经久不衰,很大程度上得益于Java的生态好。在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类。Java的生态实在太大,这里只能列举一部分。如果你对此感兴趣,不妨去读读他们的源码。 v HTML解析器jsoup 1.1 介绍 jsoup( GitHub地址 、 中文文档 )是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1.2 示例 Document document = Jsoup.connect("https://www.cnblogs.com/toutou/" ) .userAgent( "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" ) .get(); // System.out.println(document); Elements elements = document.select("div.box.item" ); for (Element element : elements) {

SLF4J默认配置文件示例

痴心易碎 提交于 2020-08-11 17:27:27
logback.xml默认配置 <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <Target>System.out</Target> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <appender name="fileLog" class="ch.qos.logback.core.FileAppender"> <file>c:/temp/test.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="stdout

别在 Java 代码里乱打日志了,这才是正确的打日志姿势!

ⅰ亾dé卋堺 提交于 2020-08-11 13:57:31
使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。 当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式: logger.debug( "Processing trade with id:[{}] and symbol : [{}] " , id, symbol); 复制代码 对于debug日志,必须判断是否为debug级别后,才进行使用: if (logger.isDebugEnabled()) { logger.debug( "Processing trade with id: " +id + " symbol: " + symbol); } 复制代码 不要进行字符串拼接,那样会产生很多String对象,占用空间,影响性能。 反例(不要这么做): logger.debug( "Processing trade with id: " + id + " symbol: " + symbol);

Logback的AsyncAppender与RollingFileAppender流程解析

给你一囗甜甜゛ 提交于 2020-08-11 13:18:00
近期工作中涉及到文件记录、文件翻转等操作,思考有没有成熟的代码以便参考. 因此,第一时间就联想到Logback的AsyncAppender以及RollingFileAppender. AsyncAppender:通过队列储存日志事件,启动Worker线程读取日志事件并写入关联的Appender中; RollingFileAppender:当日志文件满足设定的翻滚条件时,对文件进行翻滚操作. PS: AsyncAppender可以与RollingFileAppender结合使用,提升日志事件写入效率. 1 AsyncAppender public class AsyncAppender extends AsyncAppenderBase<ILoggingEvent> { // 省略部分功能 boolean includeCallerData = false; protected boolean isDiscardable(ILoggingEvent event) { Level level = event.getLevel(); return level.toInt() <= Level.INFO_INT; } protected void preprocess(ILoggingEvent eventObject) { eventObject

安装Zabbix5.0

荒凉一梦 提交于 2020-08-11 07:15:34
目录 概述 支持的平台 安全相关 支持TimescaleDB agent升级 垂直菜单 部署 安装要求 数据库要求 前端要求 服务端要求 Agent 2 Java gateway 安装 配置镜像源 安装数据库 添加源 安装 启动并设置开机自启 修改root密码 Zabbix server,Web前端,agent及相关依赖 创建初始数据库 为Zabbix server配置数据库 为Zabbix前端配置PHP 启动Zabbix server和agent进程 配置Zabbix前端 概述 Zabbix 5.0已经正式发布,相比4.0,它在可用性,安全性和完整性方面都有一系列重要改进。 支持的平台 除了现有的官方软件包和appliances外,Zabbix 5.0现在还支持以下平台: SUSE Linux Enterprise Server 15 Debian 10 Ubuntu 20.04 Raspbian 10 Mac OS/X RHEL 8 CentOS 8 MSI for Windows Agent 安全相关 SAML用于在安全身份提供者处提供单点身份验证,这意味着用户登录认证需要满足防火墙的安全策略,然后SAML用于向Zabbix和其他应用程序声明身份。SAML方式的支持使Zabbix具备开箱即用的与各种本地和云身份提供商(如Microsoft ADFS、OpenAM

Logback配置文件这么写,还愁不会整理日志?

佐手、 提交于 2020-08-10 20:24:34
摘要: 1.日志输出到文件并根据 LEVEL 级别将日志分类保存到不同文件 2.通过异步输出日志减少磁盘 IO 提高性能 3.异步输出日志的原理 1、配置文件logback-spring.xml SpringBoot 工程自带 logback 和 slf4j 的依赖,所以重点放在编写配置文件上,需 要引入什么依赖,日志依赖冲突 统统都不需要我们管了。 logback 框架会默认加载 classpath 下命名为 logback-spring.xml 或 logback.xml 的配置文件。 如果将所有日志都存储在一个文件中,文件大小也随着应用的运行越来越大并且不好排查问题,正确的做法应该是将 error 日志和其他日志分开,并且不同级别的日志根据时间段进行记录存储。 配置文件: <? xml version="1.0" encoding="UTF-8" ?> < configuration debug ="true" > <!-- 项目名称 --> < property name ="PROJECT_NAME" value ="project-api" /> <!-- 定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --> < property name ="LOG_HOME" value ="logs" /> <!-- 控制台输出 --> < appender

来看看阿里架构师Java 代码打日志姿势!你也是这样写的吗

孤者浪人 提交于 2020-08-09 11:13:45
使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。 当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式: logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol); 对于debug日志,必须判断是否为debug级别后,才进行使用: if (logger.isDebugEnabled()) { logger.debug("Processing trade with id: " +id + " symbol: " + symbol); } 不要进行字符串拼接,那样会产生很多String对象,占用空间,影响性能。 反例(不要这么做): logger.debug("Processing trade with id: " + id + " symbol: " + symbol); 使用[]进行参数变量隔离