当前位置: 首页 > news >正文

怎么让自己的网站稍微变前面点/5188关键词平台

怎么让自己的网站稍微变前面点,5188关键词平台,网站做优化有什么用吗,百家号淄博圻谷网站建设文章目录 一、Log4j简介二、Log4j组件介绍1、Loggers (日志记录器)2、Appenders(输出控制器)3、Layout(日志格式化器) 三、Log4j快速入门四、Log4j自定义配置文件输出日志1、输出到控制台2、输出到文件3、输出到数据库 五、Log4j自…

文章目录

  • 一、Log4j简介
  • 二、Log4j组件介绍
    • 1、Loggers (日志记录器)
    • 2、Appenders(输出控制器)
    • 3、Layout(日志格式化器)
  • 三、Log4j快速入门
  • 四、Log4j自定义配置文件输出日志
    • 1、输出到控制台
    • 2、输出到文件
    • 3、输出到数据库
  • 五、Log4j自定义配置文件拆分日志
    • 1、按照文件大小进行拆分
    • 2、按照日期进行拆分
  • 六、自定义配置文件中的logger

一、Log4j简介

  • Log4j是Apache的一个开源项目
  • 可以控制日志信息输出到控制台文件、甚至是数据库
  • 可以控制每一条日志的输出格式
  • 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码

二、Log4j组件介绍

  • 主要由Loggers (日志记录器)、Appenders(输出控制器)和 Layout(日志格式化器)组成
  • Loggers:控制日志的输出级别与日志是否输出
  • Appenders:指定日志的输出方式(输出到控制台、文件等)
  • Layout:控制日志信息的输出格式

1、Loggers (日志记录器)

  • 日志记录器,负责收集处理日志记录
    • 实例的命名就是类的全限定名,如com.xc.log4j.XX
    • Logger的名字大小写敏感
  • 命名有继承机制
    • 例如:name为com.xc.log4j的logger会继承name为com.xc的logger的属性
    • 父类所做的日志属性设置,会直接的影响到子类
  • Log4J中有一个特殊的logger叫做“root”,他是所有logger的根
    • 也就意味着其他所有的logger都会直接或者间接地继承自root
    • root logger可以用Logger.getRootLogger()方法获取

2、Appenders(输出控制器)

  • ConsoleAppender:将日志输出到控制台
  • FileAppender:将日志输出到文件中
  • DailyRollingFileAppender:将日志输出到一个日志文件,并且每天输出到一个新的文件
  • RollingFileAppender:将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件
  • JDBCAppender:把日志信息保存到数据库

3、Layout(日志格式化器)

  • HTMLLayout:格式化日志输出为HTML表格形式
  • SimpleLayout:简单的日志输出格式化,打印的日志格式如默认INFO级别的消息
  • PatternLayout:最强大的格式化组件,有默认的转换格式,也可以自定义格式输出日志

日志输出格式说明

  • %m:输出代码中指定的日志信息
  • %p:输出级别,及 DEBUG、INFO 等
  • %n:换行符(Windows平台的换行符为 “\n”,Unix 平台为 “\n”)
  • %r:输出自应用启动到输出该 log 信息耗费的毫秒数
  • %c:输出打印语句所属的类的全名
  • %t:输出产生该日志的线程全名
  • %d:输出服务器当前时间,默认为 ISO8601,也可以指定格式,如:%d{yyyy年MM月dd日 HH:mm:ss}
  • %l:输出日志时间发生的位置,包括类名、线程、及在代码中的行数。如:Test.main(Test.java:10)
  • %F:输出日志消息产生时所在的文件名称
  • %L:输出代码中的行号
  • %%:输出一个 “%” 字符

可以在 % 与字符之间加上修饰符来控制最小宽度、最大宽度和文本的对其方式

  • %5c:输出category名称,最小宽度是5,category<5,默认的情况下右对齐
  • %-5c:输出category名称,最小宽度是5,category<5,"-"号指定左对齐,会有空格
  • %.5c:输出category名称,最大宽度是5,category>5,就会将左边多出的字符截掉,<5不会有空格
  • %20.30c:category名称<20补空格,并且右对齐,>30字符,就从左边较远处多出的字符截掉

三、Log4j快速入门

pom依赖

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.junit.Test;public class Log4jTest {@Testpublic void test01() {// 加载初始化配置(没有配置文件则需要添加此配置)BasicConfigurator.configure();// 实例化LoggerLogger logger = Logger.getLogger(Log4jTest.class);logger.info("logger实例名称:" + logger.getName());logger.fatal("fatal信息");logger.error("error信息");logger.warn("warn信息");logger.info("info信息");logger.debug("debug信息");logger.trace("trace信息");}
}

输出结果:

0 [main] INFO com.xc.log.Log4jTest  - logger实例名称:com.xc.log.Log4jTest
1 [main] FATAL com.xc.log.Log4jTest  - fatal信息
1 [main] ERROR com.xc.log.Log4jTest  - error信息
1 [main] WARN com.xc.log.Log4jTest  - warn信息
1 [main] INFO com.xc.log.Log4jTest  - info信息
1 [main] DEBUG com.xc.log.Log4jTest  - debug信息

Log4j提供了8个级别的日志输出

  • ALL:最低等级 用于打开所有级别的日志记录
  • TRACE:程序推进下的追踪信息,这个追踪信息的日志级别非常低,一般情况下是不会使用的
  • DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的,主要是配合开发,在开发过程中打印一些重要的运行信息(默认级别)
  • INFO:消息的粗粒度级别运行信息
  • WARN:表示警告,程序在运行过程中会出现的有可能会发生的隐形的错误
  • ERROR:系统的错误信息,发生的错误不影响系统的运行 一般情况下,如果不想输出太多的日志,则使用该级别即可
  • FATAL:表示严重错误,它是那种一旦发生系统就不可能继续运行的严重错误
  • OFF:最高等级的级别,用户关闭所有的日志记录

四、Log4j自定义配置文件输出日志

  • Loader.getResource("log4j.properties");源码默认从类路径

1、输出到控制台

resources目录下的log4j.properties文件

在这里插入图片描述

@Test
public void test02(){//自定义配置文件设置Appender(输出方式)和Layout(输出格式)Logger logger = Logger.getLogger(Log4jTest.class);logger.fatal("fatal信息");logger.error("error信息");logger.warn("warn信息");logger.info("info信息");logger.debug("debug信息");logger.trace("trace信息");
}

输出结果:

[FATAL     ] [main] [2024-09-19 22:38:55:822] [com.xc.log.Log4jTest.test01(Log4jTest.java:18)] fatal信息
[ERROR     ] [main] [2024-09-19 22:38:55:825] [com.xc.log.Log4jTest.test01(Log4jTest.java:19)] error信息
[WARN      ] [main] [2024-09-19 22:38:55:825] [com.xc.log.Log4jTest.test01(Log4jTest.java:20)] warn信息
[INFO      ] [main] [2024-09-19 22:38:55:825] [com.xc.log.Log4jTest.test01(Log4jTest.java:21)] info信息

2、输出到文件

resources目录下的log4j.properties文件
在这里插入图片描述

@Test
public void test03(){//输出到文件对于追加,默认是trueLogger logger = Logger.getLogger(Log4jTest.class);logger.fatal("fatal信息");logger.error("error信息");logger.warn("warn信息");logger.info("info信息");logger.debug("debug信息");logger.trace("trace信息");
}

输出结果:

在这里插入图片描述

3、输出到数据库

创建表结构:(字段的制定可以根据需求进行调整)

CREATE TABLE `log` (`log_id` int(11) NOT NULL AUTO_INCREMENT,`project_name` varchar(255) DEFAULT NULL COMMENT '目项名',`create_date` varchar(255) DEFAULT NULL COMMENT '创建时间',`level` varchar(255) DEFAULT NULL COMMENT '优先级',`category` varchar(255) DEFAULT NULL COMMENT '所在类的全名',`file_name` varchar(255) DEFAULT NULL COMMENT '输出日志消息产生时所在的文件名称 ',`thread_name` varchar(255) DEFAULT NULL COMMENT '日志事件的线程名',`line` varchar(255) DEFAULT NULL COMMENT '号行',`all_category` varchar(255) DEFAULT NULL COMMENT '日志事件的发生位置',`message` varchar(4000) DEFAULT NULL COMMENT '输出代码中指定的消息',PRIMARY KEY (`log_id`)
);

resources目录下的log4j.properties文件

在这里插入图片描述

@Test
public void test04(){//将日志持久化到数据库表中Logger logger = Logger.getLogger(Log4jTest.class);logger.fatal("fatal信息");logger.error("error信息");logger.warn("warn信息");logger.info("info信息");logger.debug("debug信息");logger.trace("trace信息");
}

输出结果:

在这里插入图片描述

五、Log4j自定义配置文件拆分日志

1、按照文件大小进行拆分

resources目录下的log4j.properties文件

在这里插入图片描述

@Test
public void test05(){Logger logger = Logger.getLogger(Log4jTest.class);for (int i = 0; i < 10000; i++) {logger.fatal("fatal信息");logger.error("error信息");logger.warn("warn信息");logger.info("info信息");logger.debug("debug信息");logger.trace("trace信息");}
}

第一次执行

在这里插入图片描述

第二次执行

在这里插入图片描述

  • 最新日志在logFile.log文件中,logFile.log.x数字越小日志越新
  • 先打印的日志会被先覆盖
    • 如上第一次打印0123
    • 第二次打印中的45是第一次打印的0123被覆盖后东西
    • 01比23内容新,23被覆盖,那么45中剩余的就是01的内容
  • 总之最新的内容覆盖最旧的内容

2、按照日期进行拆分

resources目录下的log4j.properties文件

在这里插入图片描述

@Test
public void test05(){//根据日期拆分Logger logger = Logger.getLogger(Log4jTest.class);logger.fatal("fatal信息");logger.error("error信息");logger.warn("warn信息");logger.info("info信息");logger.debug("debug信息");logger.trace("trace信息");
}
  • 这里使用的默认根据拆分,也可以根据小时,分钟拆分
  • 今天是9.20日,昨天的日志被添加到新文件logFile.log.2024-09-19中
  • 当天日志都会记录在logFile.log中
    在这里插入图片描述

六、自定义配置文件中的logger

  • 常规创建出来的Logger对象,默认都是继承rootLogger的
  • 也可以自定义logger,让其他logger来继承这个logger

在这里插入图片描述

  • 如果根节点的logger和自定义logger配置的输出位置是不同的,则取二者的并集,配置的位置都会进行输出操作
  • 如果二者配置的日志级别不同,以按照我们自定的logger的级别输出为主

相关文章:

java日志框架之Log4j

文章目录 一、Log4j简介二、Log4j组件介绍1、Loggers (日志记录器)2、Appenders&#xff08;输出控制器&#xff09;3、Layout&#xff08;日志格式化器&#xff09; 三、Log4j快速入门四、Log4j自定义配置文件输出日志1、输出到控制台2、输出到文件3、输出到数据库 五、Log4j自…...

C++ bitset(位图)的模拟实现

文章目录 一、bitset接口总览二、bitset模拟实现1. 构造函数2. set、reset、flip、test3. size、count4. any、none、all5. 打印函数 三、完整代码 一、bitset接口总览 成员函数功能set设置指定位或所有位为1&#xff08;即设置为“已设置”状态&#xff09;reset清空指定位或…...

Llama 3.2:利用开放、可定制的模型实现边缘人工智能和视觉革命

在我们发布 Llama 3.1 模型群后的两个月内&#xff0c;包括 405B - 第一个开放的前沿级人工智能模型在内&#xff0c;它们所产生的影响令我们兴奋不已。 虽然这些模型非常强大&#xff0c;但我们也认识到&#xff0c;使用它们进行构建需要大量的计算资源和专业知识。 我们也听到…...

解决R语言bug ‘sh‘ is not recognized as an internal or external command

安装源码包‘httr2’ trying URL ‘https://cran.rstudio.com/src/contrib/httr2_1.0.5.tar.gz’ Content type ‘application/x-gzip’ length 230632 bytes (225 KB) downloaded 225 KB installing source package ‘httr2’ … ** package ‘httr2’ successfully unpacked…...

记一次Mac 匪夷所思终端常用网络命令恢复记录

一天莫名奇妙发现ping dig 等基础命令都无法正常使用。还好能浏览器能正常访问&#xff0c;&#xff0c;&#xff0c;&#xff0c; 赶紧拿baidu试试^-^ ; <<>> DiG 9.10.6 <<>> baidu.com ;; global options: cmd ;; connection timed out; no serve…...

2024最新!!Java后端面试题(4)看这一篇就够了!!!!

七、异常 throw 和 throws 的区别&#xff1f; throw用来显式地抛出一个异常&#xff0c;而throws则用于在方法声明中指明该方法可能抛出的异常。简单来说&#xff0c;throw是抛出异常的实际动作&#xff0c;throws是告知调用者这个方法可能会抛出哪些异常的声明。 final、f…...

springboot整合sentinel和对feign熔断降级

一、准备 docker安装好sentinel-dashboard&#xff08;sentinel控制台&#xff09;&#xff0c;参考docker安装好各个组件的命令启动sentinel-dashboard&#xff0c;我的虚拟机ip为192.168.200.131&#xff0c;sentinel-dashboard的端口为8858 二、整合sentinel的主要工作 在…...

遗传算法与深度学习实战——使用进化策略实现EvoLisa

遗传算法与深度学习实战——使用进化策略实现EvoLisa 0. 前言1. 使用进化策略实现 EvoLisa2. 运行结果相关链接 0. 前言 我们已经学习了进化策略 (Evolutionary Strategies, ES) 的基本原理&#xff0c;并且尝试使用 ES 解决了函数逼近问题。函数逼近是一个很好的基准问题&…...

HttpServletRequest简介

HttpServletRequest是什么&#xff1f; HttpServletRequest是一个接口&#xff0c;其父接口是ServletRequest&#xff1b;HttpServletRequest是Tomcat将请求报文转换封装而来的对象&#xff0c;在Tomcat调用service方法时传入&#xff1b;HttpServletRequest代表客户端发来的请…...

c++开发之编译curl(安卓版本)

为了在 Android 上编译支持 OpenSSL 的 libcurl&#xff0c;你需要手动编译 libcurl 和 OpenSSL&#xff0c;并确保它们能够在 Android 的交叉编译环境中正常工作。以下是详细的步骤说明。 1. 安装必要工具 在编译之前&#xff0c;确保你已经安装了以下工具&#xff1a; And…...

QT+ESP8266+STM32项目构建三部曲三--QT从环境配置到源程序的解析

一、阿里云环境配置 大家在编写QT连接阿里云的程序之前&#xff0c;先按照下面这篇文章让消息可以在阿里云上顺利流转 QTESP8266STM32项目构建三部曲二--阿里云云端处理之云产品流转-CSDN博客文章浏览阅读485次&#xff0c;点赞7次&#xff0c;收藏4次。创建两个设备&#xff…...

Web APIs 5:Window对象(BOM)+本地存储

Web APIs 5&#xff08;BOM&#xff1a;Window对象本地存储&#xff09; 1.BOM(浏览器对象模型)&#xff08;后面几个对象都为BOM对象&#xff09; BOM对象包含&#xff1a;navigator、location、document(DOM对象)、history、screenBOM是一个全局对象&#xff0c;即JS中的顶…...

神经网络(四):UNet图像分割网络

文章目录 一、简介二、网络结构2.1编码器部分2.2解码器部分2.3完整代码 三、实战案例 论文链接&#xff1a;点击跳转 一、简介 UNet网络是一种用于图像分割的卷积神经网络&#xff0c;其特点是采用了U型网络结构&#xff0c;因此称为UNet。该网络具有编码器和解码器结构&#…...

Java 编码系列:注解处理器详解与面试题解析

引言 在上一篇文章中&#xff0c;我们详细探讨了 Java 注解的基本概念、自定义注解、元注解等技术。本文将继续深入探讨 Java 注解处理器&#xff08;Annotation Processor&#xff09;&#xff0c;介绍如何编写注解处理器&#xff0c;并结合大厂的最佳实践和面试题详细解析其…...

C语言 | Leetcode C语言题解之第441题排列硬币

题目&#xff1a; 题解&#xff1a; class Solution { public:int arrangeCoins(int n) {return (int) ((sqrt((long long) 8 * n 1) - 1) / 2);} };...

Linux noVNC远程桌面(xfce)部署

一、安装 VNC 服务器和桌面环境 Notebook实验 常用vnc服务 VNC (Virtual Network Computing) 是一种远程桌面协议&#xff0c;可以让你通过网络访问服务器的图形界面。 TurboVNC&#xff1a;专为图形密集型应用设计&#xff0c;尤其适合 3D 可视化和高分辨率图像的远程传输…...

【网络安全】身份认证

1. 身份认证 1.1 定义 身份认证&#xff08;Authentication&#xff09;是确认用户身份的过程&#xff0c;确保只有授权的用户才能访问系统或资源。它通常涉及验证用户提供的凭证&#xff0c;如密码、生物特征或其他识别标志。 1.2 重要性 身份认证是信息安全的第一道防线&…...

LeetCode - #124 二叉树中的最大路径和(Top 100)

文章目录 前言1. 描述2. 示例3. 答案关于我们前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 123 期…...

Java:插入排序

目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序&#xff1a;所谓的排序&#xff0c;就是使一串记录&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个…...

How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024)概览

关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 How FAR ARE WE FROM AGI?官网 How FAR ARE WE FROM AGI?&#xff08;ICLR AGI Workshop 2024&#xff09; 该研讨会将于2024年5月11日在奥地利维也纳以混合模式举行&#xff0c;作为 ICLR 2024年会议的一部…...

leetcode刷题day33|动态规划Part02(62.不同路径、63. 不同路径 II、 343.整数拆分、96.不同的二叉搜索树)

62.不同路径 机器人从(0 , 0) 位置出发&#xff0c;到(m - 1, n - 1)终点。 动规五部曲 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路…...

基于Python大数据的B站热门视频的数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

matlab-批处理图像质量变化并形成折线图 (PSNR)

%修改路径就能用&#xff0c;图片分辨率要一致 %clc;clear all;close all;tic;%清理内存 file_pathE:\test\resources\image\;% 批量图像所在的文件夹下 file_save_pathE:\test\resources\SaveImage\;% 要存储的地址 img_path_listdir(strcat(file_path,*.jpg));% 获取批量bm…...

[Doc][Ros2]ros2中Qos(Quality of Service,服务质量)介绍

在 ROS 2 中,QoS(Quality of Service,服务质量)是用于控制节点之间消息传递的可靠性、历史存储和数据持久性等方面的机制。通过 QoS 设置,用户可以更细粒度地控制消息传递的行为,确保在不同网络环境或应用场景中满足特定的通信需求。 几个常用的包: QoSProfile: 含义…...

SpringBoot日志集成-LogBack

Log4J&#xff1a;最早的Java日志框架之一&#xff0c;由Apache基金会发起&#xff0c;提供灵活而强大的日志记录机制JDK自带的日志框架&#xff1a;java.util.logging.Logg&#xff0c;是JDK1.4之后提供的日志API&#xff0c;已淘汰logback&#xff1a; logback一个开源的日志…...

Google BigTable架构详解

文章目录 什么是BigTable?架构图一、整体架构二、数据存储与索引存储模型 三、数据拆分与存储四、元数据管理五、读写流程 其他内容概览负载平衡其他存储和数据库选项 什么是BigTable? Bigtable是Google开发的一个高性能、可扩展的分布式存储系统&#xff0c;用于管理大规模…...

【python】如何切换ipynb的kernel至指定conda环境

需求介绍 打开(若无新建环境) 环境 conda env list conda activate cvml conda install ipykernel python -m ipykernel install --name cvml 以上完成后&#xff0c;打开jupyter 创建一个python文件 在kernel——>change kernel——>python[conda env:cvml] 参考资料…...

Linux【基础指令汇总】

目录 Linux命令的特点 1、文件管理 ls命令 cp命令 mkdir命令 mv命令 pwd命令 2、文档编辑 cat命令 echo命令 rm命令 tail命令 rmdir命令 3、系统管理 rpm命令 find命令 startx命令 uname命令 vmstat命令 4、磁盘管理 df命令 fdisk命令 lsblk命令 hdpar…...

SpringCloud-EurekaClient

创建Module pom.xml <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency> spring:application:name: provider # 应用程序的名称&#xff0c;…...

配置Scrapy项目

配置Scrapy项目是一个涉及多个步骤的过程&#xff0c;在上一篇博客中已经写了安装Scrapy、创建Scrapy项目的步骤。 接下来应该定义Item类、编写爬虫程序以及配置settings.py文件等。以下是一个详细的配置Scrapy项目的步骤&#xff1a; 一、定义Item类 在项目目录下…...