项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录

文章目录

      • springboot集成lomback.xml 描述
      • 在yml中定义的一些配置信息
      • 创建logback-spring.xml文件
      • logback-spring.xml配置如下:
      • **log4j入门配置**
      • **详细介绍配置信息的:**
      • **自动清理导出的日志文件**


springboot集成lomback.xml 描述

首先在resouces目录下创建一个logback-spring.xml文件,为什么叫这个名字呢?

是因为logback默认的会从资源目录读取这个文件

配置xml文件中需要用到两个标签。

springProperty和springProfile标签,都是用于读取yml(yaml)配置文件的。

在yml中定义的一些配置信息

server:port: 9137tomcat:uri-encoding: UTF-8max-threads: 100      #最大并发数max-connections: 200     #最大连接数accepCount: 50      #等待数
#自定义的日志配置参数
logging:path: D:\xxx\ldmall-product-service\src\main\resources\logs   #保存日志lv: INFO    # 控制台日志输出级别dateSize: 1 # 日志保存天数
#邮箱配置参数
email:#主机smtpHost: smtp.qq.com#端口(465或587)smtpPort: 465username: xxx@qq.compassword: xxxxSSL: trueemail_from: from@qq.comemail_to: to@qq.com

创建logback-spring.xml文件

同事记得在resources目录下创建一个logs文件夹,用于存储项目运行,生成的日志文件

img

logback-spring.xml配置如下:

我这里把发送邮箱注释掉了

提示:

  1. 由于logback-spring.xml先于application.yml被系统加载,所以想要引用application.yml文件中的数据,需要加入标签,引入后怎么获取到呢?比如想要获取日志保存天数,就需要引入后面的引用,就只需要${log.dateSize}就可以了,中括号里面的值是springProperty 的name值。
  2. springProfile对应的是application.yml文件中的spring.profiles.active的值。
  3. 配置文件中的邮件密码不是邮箱登录密码,而是客户端授权密码,如何获取查询QQ邮箱登陆第三方客户端获取授权码就可以了。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false"><contextName>logback</contextName><!--读取yml,获取配置的信息--><property resource="application.yml"/><springProperty scope="context" name="log.path" source="logging.path"/><springProperty scope="context" name="log.lv" source="logging.lv"/><springProperty scope="context" name="log.dateSize" source="logging.dateSize"/><!--输出到控制台--><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>${log.lv}</level></filter><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><!--编码--><charset>utf-8</charset></encoder></appender><!--输出到debug--><appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/logback-debug.log</file><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-debug-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><!--编码--><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印DEBUG日志 --><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--输出到info--><appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/logback-info.log</file><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-info-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>${log.dateSize}</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><!--编码--><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印INFO日志 --><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--输出到warn--><appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/logback-warn.log</file><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-warn-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>${log.dateSize}</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 --><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--输出到error--><appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/logback-error.log</file><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-error-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>${log.dateSize}</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 --><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--    &lt;!&ndash;邮件配置&ndash;&gt;<springProperty scope="context" name="smtpHost" source="email.smtpHost"/>&lt;!&ndash; SMTP server的端口地址。 &ndash;&gt;<springProperty scope="context" name="smtpPort" source="email.smtpPort"/>&lt;!&ndash; 发送邮件账号 &ndash;&gt;<springProperty scope="context" name="username" source="email.username"/>&lt;!&ndash; 发送邮件密码(此密码客户端授权密码,不是邮箱登录密码) &ndash;&gt;<springProperty scope="context" name="password" source="email.password"/>&lt;!&ndash; 如果设置为true,appender将会使用SSL连接到日志服务器。默认值:false &ndash;&gt;<springProperty scope="context" name="SSL" source="email.SSL"/>&lt;!&ndash; 指定收件人邮箱,可设置多个邮箱,收件人账号需以逗号隔开 &ndash;&gt;<springProperty scope="context" name="email_to" source="email.email_to"/>&lt;!&ndash; 指定发件人名称。 &ndash;&gt;<springProperty scope="context" name="email_from" source="email.email_from"/>&lt;!&ndash; 标题  &ndash;&gt;<property name="email_subject" value="【System Error】: %msg" />&lt;!&ndash; 邮件发送的appender &ndash;&gt;<appender name="Email" class="ch.qos.logback.classic.net.SMTPAppender"><smtpHost>${smtpHost}</smtpHost><smtpPort>${smtpPort}</smtpPort><username>${username}</username><password>${password}</password><asynchronousSending>false</asynchronousSending><SSL>${SSL}</SSL><to>${email_to}</to><from>${email_from}</from><subject>${email_subject}</subject>&lt;!&ndash; html格式 &ndash;&gt;<layout class="ch.qos.logback.classic.html.HTMLLayout"><Pattern>%date - %level [%thread] %logger{50} %line %message</Pattern></layout>&lt;!&ndash; 等级过滤器,指定ERROR级别发送 &ndash;&gt;<filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter>&lt;!&ndash; 每个电子邮件只发送一个日志条目 &ndash;&gt;<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"><bufferSize>1</bufferSize></cyclicBufferTracker></appender>--><!--不同环境分别设置对应的日志输出节点 --><!--springProfile对应的是application.yml文件中的spring.profiles.active的值--><!--开发--><springProfile name="dev"><root level="debug"><appender-ref ref="console" /><appender-ref ref="info" /><appender-ref ref="warn" /><appender-ref ref="error" /></root></springProfile><!--测试--><springProfile name="test"><root level="warn"><appender-ref ref="console" /><appender-ref ref="warn" /><appender-ref ref="error" /><!--<appender-ref ref="Email" />--></root></springProfile><!--生产环境--><springProfile name="prod"><root level="info"><appender-ref ref="console" /><appender-ref ref="debug" /><appender-ref ref="info" /><appender-ref ref="warn" /><appender-ref ref="error" /><!-- <appender-ref ref="Email" />--></root></springProfile></configuration>

log4j入门配置

一般配置三种输出:

第一种是控制台输出

第二种是将日志输出到一个文件

第三种是将报错的信息单独输出到一个文件

依赖: spring-boot-start本身包含了log4j的包,可以不加。也可以自己指定版本。

 <!--log4j日志 --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--log4j-->

创建log4j.properties文件,配置如下

### set log levels ###
log4j.rootLogger = debug ,  stdout ,  D ,  E### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.Threshold = INFO
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

也可以用xml的方式配置。

最终输出

控制台: 设置成了INFO级别

img

日志输出: 设置成了INFO级别

错误日志输出: 设置成了ERROR级别

img

img

详细介绍配置信息的:

###配置日志根Logger
log4j.rootLogger=DEBUG,stdout,file
#ERROR 为严重错误 主要是程序的错误
#WARN 为一般警告,比如session丢失
#INFO 为一般要显示的信息,比如登录登出
#DEBUG 为程序的调试信息
log4j.additivity.org.apache=true###配置日志信息输出目的地Appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#org.apache.log4j.ConsoleAppender(控制台)
#org.apache.log4j.FileAppender(文件)
#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
#log4j.appender.error.Target=System.out
###输出ERROR级别以上的日志
log4j.appender.stdout.threshold=INFO
###配置日志信息的格式(布局)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#org.apache.log4j.HTMLLayout(以HTML表格形式布局)
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
###配置日志打印的格式格式化日志信息
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n#%m   输出代码中指定的消息
#%p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r   输出自应用启动到输出该log信息耗费的毫秒数
#%c   输出所属的类目,通常就是所在类的全名
#%t   输出产生该日志事件的线程名
#%n   输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
#%d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS}
#%l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
#log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm
# '.'yyyy-MM:每月
# '.'yyyy-ww:每周
# '.'yyyy-MM-dd:每天
# '.'yyyy-MM-dd-a:每天两次
# '.'yyyy-MM-dd-HH:每小时
# '.'yyyy-MM-dd-HH-mm:每分钟
#log4j.appender.file.MaxFileSize=1MB
###滚动文件的最大数
#log4j.appender.file.MaxBackupIndex=8
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) [TxId : %X{PtxId} , SpanId : %X{PspanId}] [ET:%X{ENV_TYPE},AN:%X{APP_NAME},SN:%X{SERVICE_NAME},CN:%X{CONTAINER_NAME},CI:%X{CONTAINER_IP}] %m%n
log4j.appender.file.Threshold=DEBUG
###将消息增加到指定文件中,false指将消息覆盖指定的文件内容
log4j.appender.file.append=true
###日志的保存位置
#log4j.appender.file.File=E:/logs/file-debug-log.log
log4j.appender.file.File=logs/file-debug-log.log
###每天产生一个日志文件
#log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.maxFileSize=100
#log4j.appender.file.maxBackupIndex=5
#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) [TxId : %X{PtxId} , SpanId : %X{PspanId}] [ET:%X{ENV_TYPE},AN:%X{APP_NAME},SN:%X{SERVICE_NAME},CN:%X{CONTAINER_NAME},CI:%X{CONTAINER_IP}] %m%n
#log4j.appender.file.Threshold=DEBUG
#log4j.appender.file.append=true
#log4j.appender.file.File=E:/logs/debug-log.log

img

自动清理导出的日志文件

log4j.rootLogger=INFO,stdout,debug,error#输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %C.%M(%L) | %m%n#输出DEBUG级别以上的日志到文件
log4j.appender.debug=org.apache.log4j.RollingFileAppender
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.File=./logs/log.txt
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
#最大文件50MB
log4j.appender.debug.MaxFileSize=50MB
#备份15个文件
log4j.appender.debug.MaxBackupIndex=15
log4j.appender.debug.Encoding=UTF-8#输出error级别以上的日志到文件
log4j.appender.error=org.apache.log4j.RollingFileAppender
log4j.appender.error.Threshold=ERROR
log4j.appender.error.File=./logs/error.txt
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
#最大文件50MB
log4j.appender.error.MaxFileSize=50MB
#备份15个文件
log4j.appender.error.MaxBackupIndex=15
log4j.appender.error.Encoding=UTF-8

将日志发送到邮件或者存储到数据库,可参考:

https://blog.csdn.net/zzq900503/article/details/31411403

https://blog.csdn.net/zzq900503/article/details/87629782

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机里什么文件无法删除,电脑上的文件删不掉怎么办

电脑上的文件删不掉怎么办如果你遇到删不掉的文件,会有“无发删除&#xff0c;磁盘未写保护或者程序正被另一个人使用中”提示。这时候该怎么办呢&#xff1f;文件出现正常方法删不走的文件&#xff0c;有几种原因。1)文件受损&#xff0c;出现异常2)文件被使用中。例如该文件打…

php编写六十甲子纳音表_六十甲子纳音表详细说明,看看你属于什么命,属于那个颜色...

六十甲子纳音表详细说明 &#xff0c;六十甲子与五行十二生肖的对应关系。1、甲子乙丑海中金&#xff0c;白&#xff0c;此年生人&#xff0c;是海中金命&#xff0c;属相是白鼠和白牛  2、丙寅丁卯炉中火&#xff0c;红&#xff0c;此年生人&#xff0c;是炉中火命&#xff…

hcl启动设备失败_英林储罐清洗设备清洗公司2021收费

英林储罐清洗设备清洗公司2021收费泉州市骏泰机电工程有限公司是拥有资质的工业清洗企业&#xff0c;从事工业机械设备清洗、空调清洗清洁、换热器清洗清洁、冷凝器清洗清洁、设备清洗、化学清洗、锅炉清洗、燃气锅炉清洗、电锅炉清洗、锅炉碱洗、锅炉酸洗、锅炉预膜、工业清洗…

SpringBoot与日志配置

前言&#xff1a; 前文我们介绍了配置文件的原理还有如果切换配置文件的环境,个人觉得归纳为一手册&#xff0c;要用的时候查一下就好了。不然记那么多挺麻烦的。。 1.日志 1、日志框架 老生常谈&#xff0c;什么是日志&#xff1b;我们平时用System.out.println(“xxxxxx”…

什么叫缺位_一位父亲能够给予孩子的最好礼物是什么?看看这部电影给出的答案...

作者&#xff1a;流云艺朵原创作品&#xff0c;欢迎个人转载分享。一般而言&#xff0c;在一个普通有子女的家庭里&#xff0c;父亲和母亲对于孩子来说都是这个世界上最亲近的人&#xff0c;最熟悉的人&#xff0c;最依赖的人。可是如果稍微留意一下网络中各种有关养育孩子&…

轴只显示5个刻度_告别大象腿,迎接魅力美腿,变身女王你只需5个方法

告别大象腿&#xff0c;迎接魅力美腿&#xff0c;变身女王你只需5个方法&#xff01;第一个方法&#xff1a;仰卧抬腿仰卧抬腿可以帮助你练出美腿&#xff0c;这个动作可以迅速燃烧你的脂肪&#xff0c;并且让你的腿部变得紧致有弹性、修长有线条&#xff0c;那我们又要怎么进行…

华为6x手机计算机软件没有了,只用一招,教你将华为手机变成电脑,这波操作没几个人知道...

原标题&#xff1a;只用一招&#xff0c;教你将华为手机变成电脑&#xff0c;这波操作没几个人知道说手机取代mp3&#xff0c;mp4&#xff0c;平板数码相机并不合适&#xff0c;不过也差不多了。不过呢手机取代电脑目前还是处于理论阶段。这两天华为在内侧云电脑&#xff0c;在…

乐高机器人教室布置图片大全_圣诞节手抄报内容简单图片漂亮

圣诞节手抄报:圣诞节手抄报内容简单图片漂亮-圣诞节手抄报。 简单好看的超多套圣诞节手抄报高清图片模板 小学圣诞节手抄报大全&#xff01;简单漂亮全都有 一、动手办报&#xff0c;尝试实践&#xff1a;1、学生独立排版2、展示学生排好版的报纸&#xff0c;欣赏各类风格不同的…

flash动画制作作品_flash施工动画制作应该展现哪些内容

伴随施工方案演示动画的不断应用&#xff0c;越来越多的人认识到其中的功效&#xff0c;施工动画通过电脑技术将建筑过程演示出来&#xff0c;能够对建筑工地和施工过程进行详细的了解&#xff0c;避免施工过程中的一些错误&#xff0c;提高施工的安全性和工程的质量。作为施工…

计算机硬件可以干嘛,鲁大师有什么用?鲁大师可以干嘛?

相信很多网友新买一台电脑都会下载安装鲁大师&#xff0c;借助鲁大师来对电脑进行硬件检测、电脑优化、驱动管理以及硬件跑分操作&#xff0c;然而这些功能也是鲁大师软件的特色&#xff0c;下面将详细介绍鲁大师有什么用&#xff1f;鲁大师到底能干吗&#xff1f;1、自动硬件检…

JAVA之编译期和运行期区别

编译期&#xff1a;检查是否有语法错误&#xff0c;如果没有就将其翻译成字节码文件。即.class文件。 运行期&#xff1a;java虚拟机分配内存&#xff0c;解释执行字节码文件。 从以下代码开始说明&#xff0c;欢迎大家指正 可以思考下&#xff0c;第一行跟第二行在编译时期有…

Java 设计模式——组合模式

概述 有时我们可能会被要求处理一个层级结构明显的对象&#xff0c;比如上下级的公司员工、比如层级嵌套的文件夹&#xff0c;还有丰富多彩的美食菜单。可是&#xff0c;我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉这些&#xff0c;学习…

关于海康官网接口文档中:取流URL有效时间为5分钟表述歧义的说明

在海康官方在线接口文档中&#xff08;原文链接&#xff1a;https://open.hikvision.com/docs/63f761576c594a309708525e1eefdbdb&#xff09;&#xff0c;关于视频预览接口中&#xff1a;获取监控点预览取流URLv2 &#xff0c;这个接口的接口说明第6条为保证数据的安全性&…

调用海康视频接口获取预览取流的URL

开始之前请参考海康官方SDK文档 鉴于前段时间刚接触视频这一块&#xff0c;整理了自己的一些经验&#xff0c;具体的你们还是参考文档来吧 附上文档地址 https://open.hikvision.com/docs/docId?productId5c67f1e2f05948198c909700&curNodeId16741aecc05944a6b0cd1341d68…

c if语句多个条件判断顺序_Java中的流程控制语句 (基础篇四)

流程控制就是对事物次序的布置和安排,在程序中就是对代码执行次序的安排和控制程序中的流程控制主要有三种&#xff1a;顺序流程、选择流程、循环流程。顺序流程&#xff1a;比如打印输出的代码按照指定的顺序结构依次排序&#xff0c;打印的结果按照代码的顺序执行打印&#x…

git checkout 会把改动带过去吗_原创 | 操作失误不要慌,这个命令给你的Git一次反悔的机会...

点击上方蓝字&#xff0c;关注并星标&#xff0c;和我一起学技术。今天我们来介绍git当中两个非常非常好用的工具&#xff0c;git show和reflog。这两个命令虽然不是必知必会&#xff0c;但是如果熟练使用可以极大地帮助我们查看代码仓库的问题&#xff0c;以及在我们操作失误的…

计算机指令执行与时序逻辑,时序逻辑系统

时序逻辑电路其任一时刻的输出不仅取决于该时刻的输入&#xff0c;而且还与过去各时刻的输入有关。常见的时序逻辑电路有触发器、计数器、寄存器等。时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号&#xff0c;而且还取决于电路原来的状态&#xff0…

flume连接kafka_日志收集系统架构设计:(flume+zookeeper+kafka+php+mysql )

正文内容一、安装jdk二、安装flume三、安装kafka1、zookeeper2、kafka四、启动测试步骤五、目录说明六、日志收集系统设计图七、大数据参考资料推荐一、安装jdk -(版本&#xff1a;1.8.0_191)1.下载&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk8…

2020班徽设计图案高中计算机,高铁工程学院举办2020级班徽设计大赛

大赛现场12月3日&#xff0c;高铁工程学院团总支第四届“班徽设计”大赛在GB250教室隆重举行&#xff0c;高铁工程学院20级新生各班参赛&#xff0c;20级辅导员代表出席评委席并参与评分。获奖选手领取证书本次比赛采用了线下评分及线上投票相结合的方式。比赛开始&#xff0c;…

Web浏览器没有Flash如何播放RTMP协议直播

各大主流浏览器在很早的时候就已声明 2020 年底不支持 Adobe Flash。所以已经线上运行的项目以及涉及直播的项目&#xff0c;都会涉及一个问题 &#xff1a; “没有 Adobe Flash 在 Web 浏览器端如何播放 RTMP 直播流&#xff1f;” 还好有先见之明&#xff0c;我参与涉及直播的…