Просмотр исходного кода

针对 Raspbian 系统修改 CPU 信息字段

reghao 5 лет назад
Родитель
Сommit
167b07a776

+ 11 - 2
common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/cpu/CPU.java

@@ -47,8 +47,17 @@ public class CPU {
 
         Map<String, String> info = result.get(0);
         CPUInfo cpuInfo = new CPUInfo();
-        cpuInfo.setCpuCores(Integer.parseInt(info.get("cpu cores")));
-        cpuInfo.setVendorId(info.get("vendor_id"));
+
+        String cpuCores = info.get("cpu cores");
+        if (cpuCores != null) {
+            cpuInfo.setCpuCores(Integer.parseInt(info.get("cpu cores")));
+        }
+
+        String vendorId = info.get("vendor_id");
+        if (vendorId != null) {
+            cpuInfo.setVendorId(vendorId);
+        }
+
         cpuInfo.setModelName(info.get("model name"));
         cpuInfo.setBogoMips(info.get("bogomips"));
 

+ 14 - 1
dagent/src/main/java/cn/reghao/autodop/dagent/utils/lifecycle/AfterAppStart.java

@@ -8,10 +8,12 @@ import cn.reghao.autodop.common.dagent.machine.api.MachineOps;
 import cn.reghao.autodop.common.utils.serializer.JsonConverter;
 import cn.reghao.autodop.dagent.machine.timer.HeartbeatJob;
 import cn.reghao.autodop.dagent.machine.timer.MachineScheduler;
+import cn.reghao.autodop.dagent.utils.spring.LoggerInitializer;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.SchedulerException;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
+import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
 import org.springframework.stereotype.Component;
 
 /**
@@ -23,11 +25,16 @@ import org.springframework.stereotype.Component;
 @Slf4j
 @Component
 public class AfterAppStart implements ApplicationRunner {
+    private RabbitProperties rabbitProperties;
     private MachineScheduler machineScheduler;
     private RabbitProducer rabbitProducer;
     private Machine machine;
 
-    public AfterAppStart(MachineScheduler machineScheduler, RabbitProducer rabbitProducer, Machine machine) {
+    public AfterAppStart(RabbitProperties rabbitProperties,
+                         MachineScheduler machineScheduler,
+                         RabbitProducer rabbitProducer,
+                         Machine machine) {
+        this.rabbitProperties = rabbitProperties;
         this.machineScheduler = machineScheduler;
         this.rabbitProducer = rabbitProducer;
         this.machine = machine;
@@ -44,6 +51,7 @@ public class AfterAppStart implements ApplicationRunner {
     private void activate() throws Exception {
         registry();
         scheduledJobs();
+        initLogger();
         log.info("dagent 应用已启动...");
     }
 
@@ -59,4 +67,9 @@ public class AfterAppStart implements ApplicationRunner {
         machineScheduler.add(HeartbeatJob.class, "machine-heartbeat", "0/10 * * * * ?");
         machineScheduler.start();
     }
+
+    private void initLogger() {
+        LoggerInitializer loggerInitializer = new LoggerInitializer();
+        loggerInitializer.initialize(rabbitProperties);
+    }
 }

+ 85 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/utils/spring/LoggerInitializer.java

@@ -0,0 +1,85 @@
+package cn.reghao.autodop.dagent.utils.spring;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.ConsoleAppender;
+import ch.qos.logback.core.FileAppender;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.rabbit.logback.AmqpAppender;
+import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
+
+/**
+ * 编程方式配置 logback,相当于 logback-spring.xml 配置
+ *
+ * @author reghao
+ * @date 2021-02-23 23:53:35
+ */
+public class LoggerInitializer {
+    private LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
+
+    public void initialize(RabbitProperties rabbitProperties) {
+        Logger rootLogger = loggerContext.getLogger("ROOT");
+        rootLogger.setAdditive(false);
+        rootLogger.setLevel(Level.INFO);
+        rootLogger.addAppender(amqpAppender(rabbitProperties));
+    }
+
+    private Appender<ILoggingEvent> amqpAppender(RabbitProperties rabbitProperties) {
+        PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
+        layoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
+        layoutEncoder.setContext(loggerContext);
+        layoutEncoder.start();
+
+        AmqpAppender amqpAppender = new AmqpAppender();
+        amqpAppender.setName("mqAppender");
+        amqpAppender.setHost(rabbitProperties.getHost());
+        amqpAppender.setPort(rabbitProperties.getPort());
+        amqpAppender.setUsername(rabbitProperties.getUsername());
+        amqpAppender.setPassword(rabbitProperties.getPassword());
+        amqpAppender.setDeclareExchange(true);
+        amqpAppender.setExchangeType("direct");
+        amqpAppender.setExchangeName("rabbit.log");
+        amqpAppender.setRoutingKeyPattern("info");
+        amqpAppender.setDurable(true);
+        amqpAppender.setAutoDelete(false);
+        amqpAppender.setDeliveryMode("NON_PERSISTENT");
+        amqpAppender.setGenerateId(true);
+        amqpAppender.setCharset("UTF-8");
+        amqpAppender.setContext(loggerContext);
+        amqpAppender.setEncoder(layoutEncoder);
+        amqpAppender.start();
+
+        return amqpAppender;
+    }
+
+    private Appender<ILoggingEvent> fileAppender() {
+        PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
+        layoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
+        layoutEncoder.setContext(loggerContext);
+        layoutEncoder.start();
+
+        FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
+        fileAppender.setFile("file");
+        fileAppender.setEncoder(layoutEncoder);
+        fileAppender.setContext(loggerContext);
+        fileAppender.start();
+
+        return fileAppender;
+    }
+
+    private Appender<ILoggingEvent> consoleAppender() {
+        PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
+        layoutEncoder.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %c %M %L - %msg%n");
+        layoutEncoder.setContext(loggerContext);
+        layoutEncoder.start();
+
+        ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
+        consoleAppender.start();
+
+        return consoleAppender;
+    }
+}

+ 0 - 1
dagent/src/main/java/cn/reghao/autodop/dagent/utils/spring/LoggingInitializer.java

@@ -25,7 +25,6 @@ public class LoggingInitializer implements ApplicationContextInitializer<Configu
     @Override
     public void initialize(ConfigurableApplicationContext applicationContext) {
         LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
-
         Logger rootLogger = loggerContext.getLogger("ROOT");
         rootLogger.setAdditive(false);
         rootLogger.setLevel(Level.INFO);

+ 1 - 1
dagent/src/main/resources/banner.txt

@@ -23,4 +23,4 @@
                       /        _/["---'""]
                      :        /  |"-     '
                      '           |      /
-                                 `      |
+                                 `      |