bifromq-plugin 插件报错怎么解决

陆() 2025-07-22 11:43:27

日志:

日志配置目录:

 

 日志配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

    <!-- 动态参数配置 -->
    <property name="pluginId" value="${pluginId:-UNKNOWN_PLUGIN}"/>
    <property name="logDir" value="${LOG_DIR:-/var/log/bifromq/plugins}"/>
    <property name="logPattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5p | ${HOSTNAME:-NA} | ${PID:-NA} | [%t] | %-40logger{40} [%F:%L] | %m%n%ex{full}"/>

    <!-- 异步日志队列参数 -->
    <property name="asyncQueueSize" value="8192"/>
    <property name="asyncDiscardThreshold" value="0"/> <!-- 0表示不丢弃日志 -->

    <!-- 1. TRACE 级别日志 (异步) -->
    <appender name="ASYNC_TRACE" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>${asyncQueueSize}</queueSize>
        <discardingThreshold>${asyncDiscardThreshold}</discardingThreshold>
        <appender-ref ref="TRACE_FILE"/>
    </appender>

    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${pluginId}/trace.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${pluginId}/trace.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxHistory>60</maxHistory> <!-- 等保要求最低60天 -->
            <maxFileSize>1GB</maxFileSize>
            <totalSizeCap>100GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
    </appender>

    <!-- 2. DEBUG 级别日志 (异步) -->
    <appender name="ASYNC_DEBUG" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>${asyncQueueSize}</queueSize>
        <appender-ref ref="DEBUG_FILE"/>
    </appender>

    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${pluginId}/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${pluginId}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxHistory>60</maxHistory>
            <maxFileSize>2GB</maxFileSize>
            <totalSizeCap>200GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>

    <!-- 3. INFO 级别日志 (异步) -->
    <appender name="ASYNC_INFO" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>${asyncQueueSize}</queueSize>
        <appender-ref ref="INFO_FILE"/>
    </appender>

    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${pluginId}/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${pluginId}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxHistory>180</maxHistory> <!-- 业务日志保留半年 -->
            <maxFileSize>5GB</maxFileSize>
            <totalSizeCap>500GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <!-- 4. WARN 级别日志 (同步) -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${pluginId}/warn.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${pluginId}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>365</maxHistory> <!-- 警告日志保留1年 -->
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 5. ERROR 级别日志 (同步+告警触发) -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${pluginId}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${pluginId}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>365</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 6. 安全审计日志 (异步+严格保留) -->
    <appender name="ASYNC_AUDIT" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>1024</queueSize>
        <appender-ref ref="AUDIT_FILE"/>
    </appender>

    <appender name="AUDIT_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${pluginId}/audit.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${pluginId}/audit.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>730</maxHistory> <!-- 审计日志保留2年 -->
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} | AUDIT | ${HOSTNAME} | ${pluginId} | %m%n</pattern>
        </encoder>
    </appender>

    <!-- 日志分级控制 -->
    <logger name="com.baidu.bifromq" level="WARN" additivity="false"/>
    <logger name="org.pf4j" level="WARN" additivity="false"/>

    <!-- 主业务日志 -->
    <logger name="com.mqttsnet.thinglinks" level="INFO">
        <appender-ref ref="ASYNC_TRACE"/>
        <appender-ref ref="ASYNC_DEBUG"/>
        <appender-ref ref="ASYNC_INFO"/>
        <appender-ref ref="WARN_FILE"/>
        <appender-ref ref="ERROR_FILE"/>
    </logger>

    <!-- 安全审计日志 -->
    <logger name="com.mqttsnet.thinglinks.audit" level="INFO" additivity="false">
        <appender-ref ref="ASYNC_AUDIT"/>
    </logger>

    <root level="WARN">
        <appender-ref ref="INFO_FILE"/>
    </root>
</configuration>

 

...全文
497 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文研究了基于深度强化学习的多无人机辅助边缘计算网络路径规划方法,旨在通过深度强化学习算法优化多无人机在执行任务时的飞行路径,以提高边缘计算网络的服务质量和效率。文中系统阐述了深度强化学习的基本原理及其在无人机路径规划中的应用,重点解决了动态环境适应性和多目标优化等关键技术难题。研究提出了一种高效的算法框架,能够有效应对复杂环境中的障碍物规避、能耗最小化和任务完成时间最短化等多重挑战。该框架通过Matlab代码实现,并经过大量仿真实验验证,结果表明,相较于传统路径规划方法,所提方法在确保飞行安全的前提下,显著提升了无人机的任务执行效率和网络服务质量,展现了优异的性能表现和广阔的应用前景。; 适合人群:具备一定编程基础,特别是熟悉Matlab编程语言,对无人机技术、边缘计算或深度强化学习感兴趣的科研人员和技术开发者。; 使用场景及目标:①为研究人员提供一种新的无人机路径规划解决方案,特别是在复杂动态环境下;②促进深度强化学习技术在无人机辅助边缘计算网络中的应用和发展;③为相关领域的工程技术人员提供技术支持和参考案例。; 阅读建议:读者在阅读本文时,应重点关注深度强化学习算法的设计思路及其在无人机路径规划中的具体应用,同时结合提供的Matlab代码进行实践操作,以便更好地理解和掌握该技术的核心要点。

446

社区成员

发帖
与我相关
我的任务
社区描述
ThingLinks物联网一体化平台社区 版本将持续迭代更新,支持商业二开; 欢迎你分享物联网及平台相关技术文档;
物联网能源开源 企业社区
社区管理员
  • xiaonannet
  • jian436
  • 很久是多久
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

ThingLinks物联网一体化平台社区

https://gitee.com/mqttsnet/thinglinks

https://github.com/mqttsnet/thinglinks

试试用AI创作助手写篇文章吧