log4j2常用配置

2023-05-16

文章目录

  • 1.概述
  • 2.配置详解
    • 2.1. appender组件列表
    • 2.2.ConsoleAppender
    • 2.3.RollingFileAppender
      • 2.3.1.TriggeringPolicy
      • 2.3.2.RolloverPolicy
        • 2.3.2.1.DefaultRolloverStrategy
        • 2.3.2.2.DirectWriteRolloverStrategy
        • 2.3.2.3.归档保留策略
  • 3.日志归档+日志清理配置demo
  • 4.总结

1.概述

JAVA常用的日志收集api和实现框架都有多种,不同的api和实现框架之间怎么相互兼容都比较复杂,不过大部分的日志框架实现也都提供了对其他日志收集方式的兼容和切换(可以参考https://my.oschina.net/pingpangkuangmo/blog/410224)。本文主要介绍log4j2的Appenders下的组件列表,及几种比较常见的appender配置。

2.配置详解

log4j2.xml文件结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration>
	<Properties>
		...
	</Properties>

	<Appenders>
		...
	</Appenders>

	<Loggers>
		...
	</Loggers>
</Configuration>

配置文件由Properties、Appenders、Loggers三块组成。Properties配置基础变量,Loggers负责配置日志级别,Loggers配置日志收集方式、布局、输出、清理等功能。

2.1. appender组件列表

append标签描述
AsyncAppender<Async>用于接受其他类型appender的引用,并使用单独线程异步写入log
CassandraAppender<Cassandra>将日志写入Cassandra数据库中,需要提前建立keyspace和table
ConsoleAppender<Console>其日志写入System.out或System.err,默认为System.out
FailoverAppender<Failover>故障转移appender,可以指定主appender,并且包含一组appender集合,当主appender写入失败,则会依次使用其他append写入,直至写入成功或者全部appender写入失败
FileAppender<File>将日志写入文件,使用FileManager执行io
FlumeAppender<Flume>将日志序列化后发送给Flume代理。
可选组件,由单独的jar提供。
JDBCAppender<JDBC>使用标准JDBC将日志写入关系数据库表,必须使用连接池
JMS Appender<JMS>将日志发送至JMS中
JPAAppender<JPA>通过JPA将日志写入关系型数据库表,需要有单独的persistence.xml配置文件
HttpAppender<Http>通过http请求发送日志,使用HttpURLConnection实现,响应2XX状态码为成功,否则抛出异常
KafkaAppender<Kafka>将日志事件发送到Kafka的topic中
MemoryMappedFileAppender<MemoryMappedFile>2.1新增功能,将指定日志文件的一部分映射至内存,并将新日志事件写入此内存,达到阈值时将此内存刷新至存储设备
NoSQLAppender-使用内部轻量级Provider接口将日志事件写入NoSQL数据库。目前只有MongoDB和Apache CouchDB的Provider实现
NoSQLAppender for MongoDB-2.0.11开始,提供两个MongoDB模块:log4j-mongodb2、log4j-mongodb3
NoSQLAppender for MongoDB 2<NoSql name=“databaseAppender”>
<MongoDb2>
</NoSql>
使用MongoDB驱动程序版本2将日志写入MongoDB中
NoSQLAppender for MongoDB 3<NoSql name=“databaseAppender”>
<MongoDb3>
</NoSql>
使用MongoDB驱动程序版本3将日志写入MongoDB中
NoSQLAppender for Apache CouchDB<NoSql name=“databaseAppender”>
<CouchDb>
</NoSql>
使用内部轻量级Provider将日志写入CouchDB中
OutputStreamAppender-OutputStreamAppender不能直接配置,只是作为基础组件提供给其他Appender使用,如可以将日志事件写入输出流的File和Socket
RandomAccessFileAppender<RandomAccessFile>与FileAppender相比,使用的I/O实现类不同,FileAppender使用FileOutputStream,RandomAccessFileAppender 使用RandomAccessFile。bufferedIO=true(默认是true)时,性能提高20-200% 。
RewriteAppender<Rewrite>用于在日志被其他Appender写入文件之前,通过RewritePolicy修改日志事件
RollingFileAppender<RollingFile>将日志写入文件,并根据TriggeringPolicy和RolloverPolicy规则将文件归档、清理
RollingRandomAccessFileAppender<RollingRandomAccessFile>与RollingFileAppender相比,使用的I/O实现类不同,RollingFileAppender使用FileOutputStream,RollingRandomAccessFileAppender使用RandomAccessFile。bufferedIO=true(默认是true)时,性能提高20-200% 。
RoutingAppender<Routing>配置不同的规则,将日志路由到不同的Appender进行输出
SMTPAppender<SMTP>发生指定日志事件时,发送电子邮件
ScriptAppenderSelector<ScriptAppenderSelector>根据Script脚本的执行结果来选择AppenderSet中配置的Appender,并将结果输出至ScriptAppenderSelector的name中
SocketAppender<Socket>通过tcp或者udp,将日志写入远程目标中
SyslogAppender<Syslog>SyslogAppender是一个SocketAppender,它将其输出以符合BSD Syslog或RFC 5424格式的日志写入到远程目标
ZeroMQ/JeroMQ Appender<JeroMQ>ZeroMQ Appender使用JeroMQ库将日志事件发送到一个或多个ZeroMQ端点

2.2.ConsoleAppender

ConsoleAppender比较简单,就是把日志写入System.out或者System.err中,基本配置如下:

<Console name="STDOUT" target="SYSTEM_ERR">
	<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %t %5p [%c:%L] - %m%n" />
</Console>

Console一般使用基本配置就可以,唯一要注意的就是输出格式pattern,pattern的配置释义如下:

参数描述
%c或%logger输出logName,如 Logger log = LoggerFactory.getLogger(“com.test.logName”); 则输出为“com.test.logName” ,如果格式为%c{参数},则输出内容参考官网: 在这里插入图片描述
%C或%class输出为所在类的全路径名
d{pattern}或date{pattern}输出时间,其中pattern可以是保留字,也可以是SimpleDateFormat中的字符。如
%d{DEFAULT} --> 2012-11-02 14:34:02,781
%d{DEFAULT_MICROS} --> 2012-11-02 14:34:02,123456
%d{yyyy-MM-dd HH:mm:ss.SSS} --> 2020-03-31 23:25:13.321
详见log4j PatternLayout
%F或%file输出所在类名.java,如所在类为com.test.LogTest,则输出为LogTest.java
%l输出错误的完整位置,全路径类名.方法名(类名.java:行号),如,com.test.LogTest.testLog(LogTest.java:31)
%L输出行号
%m或%msg或%message输出log.error(text)中的text内容
%M或%method输出方法名
%n换行符
%t或%thread输出线程名
%u{“RANDOM” | “TIME”}或uuid输出uuid
%sn或%sequenceNumber输出自增序列
%r或%relative输出从JVM启动到当前时刻的毫秒数
%T或%tid或%threadId输出线程id
%t或%tn或%thread或%threadName输出线程id
%tp或%threadPriority输出线程优先级

2.3.RollingFileAppender

RollingFileAppender是一个OutputStreamAppender,可以根据TriggeringPolicy和RolloverPolicy将文件切割归档,通过RollingFileManager(扩展了OutputStreamManager)来实际执行文件I / O并执行归档。参数如下:

参数类型描述
appendboolean默认为true。如果为true,记录将附加到文件末尾。设置为false时,将在写入新记录之前清除文件
bufferedIOboolean默认为true。如果为true,数据先写入缓冲区,如果缓冲区满或者immediateFlush 为true时,数据才被写入磁盘,如果为false直接写入磁盘。文件锁定不能与bufferedIO一起使用
bufferSizeint缓冲区大小。bufferedIO为true时,此参数有效,默认为8192 bytes
createOnDemandboolean默认为false。按需创建文件。仅当日志事件通过所有Filter并且路由到该append时,append才创建文件
filterFilter确定事件是否应由此Appender处理,通过CompositeFilter(对应标签为<Filters>)可以使用多个过滤器
fileNameString要写入的文件名,如果不存在或者父目录不存在,则创建对应的文件或目录
filePatternString归档文件的模式,取决于所使用的RolloverPolicy
immediateFlushboolean默认为true。如果为true,每次写操作后都会将数据刷新入磁盘,可能会影响性能。
每次写入后刷新仅在使用同步appender时才有用。即使设置为false,异步appender也将在一批事件结束后自动刷新,这也可以确保效率更高的将数据写入磁盘。
layoutLayout格式化日志输出格式。如果未设置,则默认为’%m%n’
nameStringappend名称
policyTriggeringPolicy用于确定归档的触发条件
strategyRolloverStrategy用于确定归档的文件名称、路径及归档方式
ignoreExceptionsboolean默认为true。设置为true时,如果记录日志发生异常,此条日志和异常将被忽略。设置为false时,异常将被抛出到调用方。如果此append用在FailoverAppender中,则必须设置为false。
filePermissionsString创建文件时指定文件的rwx权限,前提是文件系统应支持POSIX文件属性视图
fileOwnerString文件所有者。出于安全原因,更改文件的所有者可能受到限制,并且不允许操作时会抛出IOException。
如果_POSIX_CHOWN_RESTRICTED对路径有效,则只有有效用户ID等于文件用户ID或具有适当特权的进程才可以更改文件的所有权,前提是文件系统应支持文件所有者属性视图
fileGroupString文件组。,前提是文件系统应支持POSIX文件属性视图

2.3.1.TriggeringPolicy

TriggeringPolicy是控制日志文件归档的触发条件。总共有四种类型的TriggeringPolicy,可以组合(CompositeTriggeringPolicy)多种触发策略来控制归档,标签为<Policies>,如果配置了多种策略,则只要有一种策略返回true,就返回true。

<Policies>
  <!-- <CronTriggeringPolicy schedule="0 0 * * * ?"/> -->
  <OnStartupTriggeringPolicy minSize="2" />
  <SizeBasedTriggeringPolicy size="20 MB" />
  <TimeBasedTriggeringPolicy />
</Policies>

四种类型如下:

  • OnStartupTriggeringPolicy
    如果日志文件的时间比JVM的启动时间早,或者达到minSize的值,则会触发归档。
    minSize:触发文件归档的最小值,默认为1。
  • SizeBasedTriggeringPolicy
    当文件达到指定大小后,触发归档。大小可以通过size指定,单位为KB、MB、GB。与TimeBasedTriggeringPolicy配合使用时,filePattern中必须包含%i,否则文件每次归档时都会覆盖当前文件,因为TimeBasedTriggeringPolicy不会让文件名中的时间戳改变。如果不使用TimeBasedTriggeringPolicy,则SizeBasedTriggeringPolicy会让时间戳改变。
  • TimeBasedTriggeringPolicy
    当前时间与当前日志文件时间不匹配时,TimeBasedTriggeringPolicy会触发归档。参数如下:
参数描述
interval基于filePattern中配置的最小时间单位进行来控制归档频率,默认值为1。如:filePattern中最小时间单位为小时,如果interval=1,则1小时归档一次;如果interval=2,则2小时归档一次。
modulate默认为false。指明是否对interval进行调节,若modulate为true,会以0为开始对interval进行偏移计算。例如,最小时间粒度为小时,当前为3:00,interval为4,则后面归档时间依次为4:00,8:00,12:00,16:00
maxRandomDelay指示随机延迟过渡的最大秒数。默认情况下,该值为0,表示没有延迟。此设置在配置了多个应用程序以同时滚动日志文件的服务器上很有用,并且可以在整个时间上分散这样做的负担。
  • CronTriggeringPolicy
    基于cron表达式触发归档。此策略由计时器控制,并且与处理日志事件异步,因此上一个或下一个时间段的日志事件可能会出现在当前日志文件的开头或结尾。filePattern属性应包含一个时间戳,否则目标文件将在每次归档时被覆盖。参数如下:
参数描述
schedulecron表达式,该表达式与Quartz调度程序中允许的表达式相同。详见CronExpression
EvaluationOnStartup启动时,将根据文件的最后修改时间戳评估cron表达式。如果cron表达式指示应该在该时间和当前时间之间归档,则文件将立即被归档。

2.3.2.RolloverPolicy

用来控制文件归档方式,目前有两种类型如下:

2.3.2.1.DefaultRolloverStrategy

通过接收filePattern属性中日期/时间模式(%d)和整数(%i)来控制归档方式。如果存在日期/时间模式,则将在归档时使用当前时间替换filePattern中配置的日期/时间部分,如果模式包含整数,则它将在每次归档时递增。如果归档时在模式中同时包含日期/时间和整数,则整数将递增,直到日期/时间部分也将被替换。如果文件模式以“ .gz”,“.zip”,“.bz2”,“.deflate”,“.pack200”或“ .xz”结尾,则将使用与后缀匹配的压缩方案来压缩文件。 bzip2, Deflate, Pack200 and XZ格式要求有Apache Commons Compress组件,另外xz格式还要求有XZ for Java组件。
DefaultRolloverStrategy参数如下:

参数描述
fileIndex默认值为max。可选值为:min、max,2.8之后新增nomax。文件归档及新文件创建规则后面介绍。
min计数器的最小值。预设值为1。
max计数器的最大值。一旦达到此值,较旧的归档文件将在以后的转换中被删除。预设值为7。
compressionLevel将压缩级别设置为0-9,其中0 =无,1 =最佳速度,直到9 =最佳压缩。仅针对ZIP文件实现
tempCompressedFilePattern压缩期间归档日志文件的文件名的模式。

fileIndex设值不同,则文件归档及新文件创建及计数器递增方法都不同,计数器递增有三种方式,如下:

  • 方式一:fileIndex值为max
    假设将DefaultRolloverStrategymin属性设置为1,将max属性设置为3,fileName是“ foo.log”,filePattern是“ foo-%i.log”,归档规则如下:
归档数当前日志文件归档文件描述
0foo.log-所有日志记录都将转到初始文件
1foo.logfoo-1.log第一次归档,foo.log重命名为foo-1.log。创建新的foo.log文件并继续写入
2foo.logfoo-2.log,foo-1.log第二次归档,foo.log重命名为foo-2.log。创建新的foo.log文件并继续写入
3foo.logfoo-3.log,foo-2.log,foo-1.log第三次归档,foo.log重命名为foo-3.log。创建新的foo.log文件并继续写入
4foo.logfoo-3.log,foo-2.log,foo-1.log第四次和随后的归档,foo-1.log被删除,foo-2.log被重命名为foo-1.log,foo-3.log被重命名为foo-2.log,foo.log被重命名为foo-3.log。创建新的foo.log文件并继续写入。
  • 方式二:fileIndex值为min

假设将DefaultRolloverStrategymin属性设置为1,将max属性设置为3,fileName是“ foo.log”,filePattern是“ foo-%i.log”,归档规则如下:

归档数当前日志文件归档文件描述
0foo.log-所有日志记录都将转到初始文件
1foo.logfoo-1.log第一次归档,foo.log重命名为foo-1.log。创建新的foo.log文件并继续写入
2foo.logfoo-1.log,foo-2.log第二次归档,将foo-1.log重命名为foo-2.log,并将foo.log重命名为foo-1.log。创建新的foo.log文件并继续写入
3foo.logfoo-1.log,foo-2.log,foo-3.log第三次归档,将foo-2.log重命名为foo-3.log,将foo-1.log重命名为foo-2.log,将foo.log重命名为foo-1.log。创建新的foo.log文件并继续写入
4foo.logfoo-1.log,foo-2.log,foo-3.log第四次和随后的归档,删除foo-3.log,将foo-2.log重命名为foo-3.log,将foo-1.log重命名为foo-2.log,将foo.log重命名为foo -1.log。创建新的foo.log文件并继续写入。
  • 方式三:fileIndex值为nomax
    nomax为2.8新增属性,设置为nomax时,将忽略DefaultRolloverStrategy的最大值和最小值,每次归档生成的新文件相对于前一个文件编号加1,没有最大文件数限制。

2.3.2.2.DirectWriteRolloverStrategy

将日志事件直接写入由filePattern表示的文件。使用此策略文件不会执行重命名。如果是基于大小的触发策略,将在指定的时间段内写入多个文件,它们从1开始编号,并不断递增直到发生基于时间归档。
注意:如果filePattern的后缀表示应该进行压缩,则在关闭应用程序时不会压缩当前文件。此外,如果时间更改使得filePattern不再与当前文件匹配,则启动时也不会对其进行压缩。
DirectWriteRolloverStrategy模式参数如下:

参数描述
maxFiles与文件格式匹配的时间段内允许的最大文件数。如果超出文件数量,则最早的文件将被删除。如果指定,则该值必须大于1。如果该值小于零或省略,则文件数量将不受限制。
compressionLevel将压缩级别设置为0-9,其中0 =无,1 =最佳速度,直到9 =最佳压缩。仅针对ZIP文件实现。
tempCompressedFilePattern压缩期间归档日志文件的文件名的模式。

2.3.2.3.归档保留策略

DefaultRolloverStrategy模式下,Log4j-2.5引入了Delete(删除)操作(标签为<delete>),与 max属性所提供的功能相比,Log4j-2.5使用户可以更好地控制在归档时删除哪些文件。删除操作使用户可以配置一个或多个条件,以选择要相对于基本目录删除的文件。

注意:可以删除任何文件,而不仅仅是删除日志文件,因此请谨慎使用此操作!使用testMode参数,可以测试配置,而不会意外删除错误的文件。
delete参数如下:

参数描述
basePath必需。从此处开始扫描要删除的文件的基本路径。
maxDepth要访问的目录的最大级别数。值为0表示仅访问起始文件,除非安全管理器拒绝。Integer.MAX_VALUE的值指示应访问所有级别。默认值为1,表示仅指定基本路径中的文件。
followLinks是否遵循符号链接。默认为false。
testMode如果为true,则不会删除文件,而是在INFO级别打印一条消息到状态记录器。使用此功能可以测试配置是否按预期工作。默认为false。
pathSorter一个实现PathSorter 接口的插件, 用于在选择要删除的文件之前对文件进行排序。默认设置是首先对最近修改的文件进行排序。
pathConditions如果未指定ScriptCondition,则为必需。

可以指定一个或多个PathCondition元素。如果指定了多个PathCondition元素,则需要所有的PathCondition结果都为true才会进行删除。PathCondition也可以嵌套。如果进行嵌套,则是先判断外层的PathCondition,然后进行内层的判断。如果没有嵌套,则是按顺序进行判断。

也可以创建自定义条件或使用内置条件:
IfFileName 如果文件名与此参数匹配则结果为true,此参数为正则表达式或 glob的文件。
IfLastModified 最后修改时间早于或等于此参数则结果为true,此参数为duration。
IfAccumulatedFileCount 文件数超过指定个数则结果为true,此参数为整型。
IfAccumulatedFileSize 所有文件总大小达到此参数则结果为true,此参数为KB、MB、GB。
IfAll 如果此标签下的所有条件都配置成功(逻辑与),则结果为true。
IfAny 如果此标签下的任何一个条件匹配成功(逻辑或),则结果为true。
IfNot 如果此标签下的所有条件都不匹配(逻辑非),则结果为true。
scriptCondition如果未指定PathConditions,则为必需。指定脚本的ScriptCondition元素。ScriptCondition应该包含一个Script,ScriptRef或ScriptFile元素,该元素指定要执行的逻辑。(有关配置ScriptFiles和ScriptRefs的更多示例,另请参阅ScriptFilter文档。)该脚本传递了许多参数,包括在basePath下找到的路径列表(最大maxDepth),并且必须返回包含要删除的路径的列表。

3.日志归档+日志清理配置demo

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration status="WARN">
	<Properties>
		<Property name="logDir">/export/Logs/meeting/</Property>
		<Property name="logFile">gltLog</Property>
	</Properties>

	<Appenders>
		<Console name="STDOUT" target="SYSTEM_ERR">
			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %t %5p [%c:%L] - %m%n" />
		</Console>

		<!--日志名称及归档的压缩包名称及规则-->
		<RollingFile name="RollingFile" fileName="${logDir}/${logFile}.log"
					 filePattern="${logDir}/$${date:yyyy-MM}/${logFile}.%d{yyyy-MM-dd}-%i.log.gz">

			<!--日志输出格式-->
			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %t %5p [%c:%L] - %m%n" />

			<!--满足任何一个policy即进行归档-->
			<Policies>
				<!--当前日志与开始日期不匹配(RollingFile中配置的filePattern中配置的最小时间单位不匹配时)时进行归档-->
				<TimeBasedTriggeringPolicy/>
				<!--文件超过5M进行归档-->
				<SizeBasedTriggeringPolicy size="5 MB" />
			</Policies>

			<!--归档的文件最大数量-->
			<DefaultRolloverStrategy max="10">
				<!--删除规则-->
				<Delete basePath="${logDir}" maxDepth="2">
					<!--匹配文件规则-->
					<IfFileName glob="*.log.gz">
						<IfLastModified age="7d">
							<IfAny>
								<!--logDir下文件总大小超过50M,进行删除-->
								<IfAccumulatedFileSize exceeds="50 MB" />
								<!--logDir下文件总数量超过10,进行删除-->
								<IfAccumulatedFileCount exceeds="10" />
							</IfAny>
						</IfLastModified>
					</IfFileName>
				</Delete>
			</DefaultRolloverStrategy>
		</RollingFile>
	</Appenders>

	<Loggers>
		<Root level="debug">
			<AppenderRef ref="STDOUT" />
			<AppenderRef ref="RollingFile" />
		</Root>
	</Loggers>
</Configuration>

4.总结

log4j 2.x相对于1.x增加了大量的api及高级特性,由于目前很少用到其他appender组件,本文仅仅列了下所有的appender组件的作用,只介绍了几个常用的appender组件,后面用到其他组件在总结吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

log4j2常用配置 的相关文章

  • 国赛----可见光室内定位

    初期试探 拿到题目后 xff0c 反复读了题目 首先队内结合网上资料形成了两种方案 xff0c 原理相同就是利用光信号到达的强度来定位 两者差距在于算法不同而已 xff0c 一种利用计算得出位置 xff0c 另一种就是经过测量得到一种位置与
  • 过采样提升信噪比

    结论 增加采样率可以使得信号的信噪比提升 公式 xff1a SNR xff1d 6 02N xff0b 1 76 xff0b 10 log fs 2B 问题的前提 假设一个纯净的信号 xff08 不含噪声 xff09 经过一个ADC采样 x
  • 如何解决KEIL报错 error in include chain (cmsis_armcc.h): expected identfieror

    经过一番寻找终于找到了这个令人心烦的解决方法 xff0c 首先说明这个错误是编译器的错误 xff0c 也就是它抽风不正常工作了 原因 In the most common case the syntax checker was not ab
  • 图像去水印——opencv实现

    图像去水印 opencv实现 功能简介 xff1a 通过拖动鼠标实现指定区域水印或是斑点的去除 实现原理 xff1a 利用opencv鼠标操作setMouseCallback函数框选 xff08 左上到右下 xff09 需要处理的区域 xf
  • 应用宝ysdk接入心得

    unity 应用宝ysdk接入 对于应用宝ysdk的接入 自身的感觉 还是比较简单的 xff0c 只是刚开始的时候感觉很可怕 xff0c 都是听别人说多难多难 xff0c 在没接触的时候就给自己造成了心理的阴影 xff0c 但是 当你去做的
  • MLT 框架设计文档翻译

    框架设计 前言目标群众 基本概述基础设计信息结构与流程用法Hello World工厂服务属性播放列表滤镜附加滤镜介绍混合 混合过渡 多轨道与过渡 前言 MLT是为电视广播设计的开源多媒体框架 严格来说 xff0c 它为使项目包含新的音视频源
  • Ubuntu 16.04 x11vnc在无显示器的时候很卡的解决方法

    原链接 运行测试平台 小强ROS机器人 在Ubuntu 16 04上使用x11vnc作为vnc服务器的时候 xff0c 发现非常的卡 但是一旦插上显示器之后就正常了 在网上搜索也没有找到解决方案 最后终于通过Xorg的log找到了原因 在
  • Hyper-V虚拟机没有声音怎么办?介绍两种“发声”方式(以Windows10为例)

    最近使用在VMware上的Windows虚拟机发现稍微有点卡 xff0c 之前有听说过Windows原生的虚拟机工具Hyper V所以像尝试一下 xff0c 安装的教程这里就不做过多的演示了 xff0c 相信有很多人碰到虚拟机没有声音的问题
  • PX4启动gazebo仿真时无法连接地面站和ros解决办法

    利用脚本启动gazebo仿真后无人机的模型可以出来 xff0c 但是无人机的桨叶一直在转 xff0c 且无法连接地面站和ros xff0c 原因时模型没有编译 xff0c 找到所用模型所在的Firmware文件夹下编译模型 Firmware
  • PX4利用GAZEBO多机仿真

    PX4利用GAZEBO多机仿真 参考https docs px4 io master zh simulation multi vehicle simulation gazebo html 以五架为例 xff0c m后面表示用哪个模型 xff
  • viso常用设置

    viso常用设置 自动连接 自动对齐 xff0c 选中流程图的组件 设置自动对齐和自动调整间距 xff0c 或者在 位置 里设置间距
  • QT编译后生成可以放到别的电脑执行的可执行文件

    QT编译后生成可以放到别的电脑执行的可执行文件 参考链接 https www cnblogs com xiaohai123 p 13564063 html 编译的时候选择release pro文件的TEMPLATE 61 lib改成TEMP
  • ubuntu解压rar文件

    ubuntu解压rar文件 ubuntu默认是不能解压rar文件的 如果要解压 xff0c 需要安装解压工具 ubuntu 下rar解压工具安装方法 xff1a 1 压缩功能 安装 sudo apt get install rar 卸载 s
  • ubuntu18.04安装截图软件flameshot

    ubuntu18 04安装截图软件flameshot 安装命令 xff1a sudo apt get install flameshot 安装完后在软件里找到下图图标点击打开 然后在收藏夹栏右击添加到收藏夹 xff0c 然后就可以点击收藏夹
  • PX4更改仿真的默认初始GPS位置

    xff30 xff38 4更改仿真的默认初始 xff27 xff30 xff33 位置 参考连接 https dev px4 io master zh simulation jmavsim html 先执行 export PX4 HOME
  • ubuntu18.04安装搜狗输入法

    ubuntu18 04安装搜狗输入法 先安装fcitx框架 sudo add apt repository ppa fcitx team nightly 添加FCITX仓库 sudo apt get update 更新仓库 sudo apt
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 百度2014校园招聘笔试题(武汉站 9.28)

    一 简答题 xff08 本题共30分 xff09 动态链接库与静态链接库分别有什么优缺点 xff1f xff08 10分 xff09 轮训任务调度和抢占式任务调度有什么区别 xff1f xff08 10分 xff09 请列出数据库中常用的锁
  • PX4常用起飞检查参数

    电源检查 xff35 xff33 xff22 连接检查 安全开关检查 如果报错加速度偏移过大 xff0c high Accelerometer bios 可以把com arm ekf ab这个参数调大一些 同理可以通过改下面这个参数把陀螺仪
  • ubuntu18.04安装谷歌浏览器

    wget https dl google com linux direct google chrome stable current amd64 deb sudo apt get f install sudo dpkg i google c

随机推荐

  • PX4添加自定义日志消息

    固件版本 xff11 11 一 将要观察的数据声明成uORB消息 xff0c 并发布 我这里随便添加了一个 在logged topics cpp里的add default topics函数里加上一行add topic fanbu 100 或
  • PX4硬件在环仿真

    以四旋翼为例 参考链接 https dev px4 io master zh simulation hitl html xff11 将飞控连接到地面站 xff0c 机架类型选择HIL Quadcopter X xff12 激活 HITL 模
  • AD18设置不显示丝印

    双击下图的图标 将下图的小眼睛符号点一下关闭显示
  • 仿pix2.4.6从与原理图导出PCB时所有元件都提示找不到封装解决办法

    打开pcb页面 xff0c 点击设计 gt 生成pcb库 原理图元件的封装设置为任意 如果生成PCB库的时候生成的不全 xff0c 可以生成集成库 点击设计 生成集成库 xff0c 生成后如下 生成后双击一个原理图封装 xff0c 在下图红
  • 查看PX4主模式和从模式的值

    在QGC中的图中位置添加如下 qDebug lt lt 主模式 lt lt heartbeat base mode qDebug lt lt 从模式 lt lt heartbeat custom mode 编译qgc并链接无人机 切换无人机
  • ubuntu安装向日葵远程控制软件

    下载向日葵命令行版本 https sunlogin oray com download 在下载目录打开终端 执行 sudo apt install 下载的文件名 y f 如 sudo apt install SunloginClient 1
  • px4 1.11.0设置使能两个数传口

    可以在telem2上再接一个数传 xff0c 两个数传都可以和地面站通信
  • ubuntu下ulog文件转csv文件并在matlab里画图

    在需要转化的ulog文件目录下 执行 ulog2csv XXX ulog xff0c 会自动在当前目录下生成一系列csv文件 将csv文件拖到matlab界面中 xff0c 会弹出下面的页面 xff0c 点击导入 会提示导入到工作区 xff
  • 求字符串中的最长回文子串

    方法一 xff08 暴力法 xff09 xff1a include lt stdio h gt include lt string h gt bool Palindrome const char str int start int end
  • PX4利用jmavsim进行多机仿真

    编译 PX4 make px4 sitl default运行 sitl multiple run sh 指定要启动的飞行器的实例数目 例如 2 Tools sitl multiple run sh 2打开另一个终端 xff0c 启动第一个实
  • 基于ubuntu系统下的USB设备绑定

    一 基于ubuntu系统下的USB设备绑定 1 解决问题 xff1a 在Ubuntu系统的使用中 xff0c 没有对USB进行设备进行绑定的话 xff0c 每次插拔或者顺序的不同 xff0c 都会造成ttyUSB端口号的改变 xff0c 不
  • ROS机器人从零开始——Ubuntu18.04安装melodic

    https blog csdn net jiejiemcu article details 105314870 utm medium 61 distribute pc relevant none task blog baidujs titl
  • ROS+PX4学习与开发 0.0 、目录

    相关视频讲解https www bilibili com video BV1AD4y1c7Tg 1 1学习结构 1 2预备知识 1 3 ROS无人机简介 1 4 PX4程序下载 1 5 PX4 载具选择 1 6 PX4初始化校准 1 7 P
  • ROS+PX4学习与开发1.2、预备知识

    查看相关视频讲解 话不多说 xff0c 直奔主题 本次配套的文章以无人机作为载体进行ROS与PX4的结合使用 无人机本身是一个复杂的 庞大的无人设备 xff0c 涉及到的知识面非常广 xff0c 好在PX4和ROS都已经将无人机的各种功能进
  • ROS+PX4学习与开发1.3、ROS无人机简介

    查看相关视频讲解无人机简介 PX4详细介绍网址如下 xff1a https www ncnynl com archives 201810 2624 html 主要组成部分 xff1a 红色部分为ROS升级版功能实现 1 飞控 xff08 基
  • 基于PX4的无人船组装

    基于PX4的无人船组装 配件购买地址 无人机本身是一个复杂的 庞大的无人设备 xff0c 涉及到的知识面非常广 xff0c 好在PX4和ROS都已经将无人机的各种功能进行了封装 xff0c 这就给初学者提供了极大的便利 考虑到二次开发的使用
  • 虚拟机中ubuntu安装vm-tools后仍然不能复制粘贴

    虚拟机中ubuntu安装vm tools后仍然不能复制粘贴 ubuntu18 04及后续版本 xff0c 不再安装vm tools xff0c 改用成安装open vm tools xff0c 安装命令如下 xff1a 执行以下命令并重启
  • AD09 DXP保姆级教程系列——001、汉化与新建工程

    汉化 1 打开软件 2 选中此处DXP xff0c 选中优先选项 3 点击使用本地资源 xff0c 及Use localized resources后重启打开 xff0c 无需安装汉化包之类的 4 重启后即可看到已经完成汉化 新建一个工程
  • AD09 DXP保姆级教程系列——002、恢复默认界面

    恢复默认界面 1 选择查看下的桌面布局 xff0c 选择默认即可恢复初始化界面
  • log4j2常用配置

    文章目录 1 概述2 配置详解2 1 appender组件列表2 2 ConsoleAppender2 3 RollingFileAppender2 3 1 TriggeringPolicy2 3 2 RolloverPolicy2 3 2