zyx il y a 1 an
Parent
commit
2e43a12195
3 fichiers modifiés avec 140 ajouts et 8 suppressions
  1. 4 3
      build.gradle
  2. 129 0
      src/main/java/org/example/AliyunLogger.java
  3. 7 5
      src/main/java/org/example/Daka.java

+ 4 - 3
build.gradle

@@ -4,14 +4,13 @@ plugins {
 
 group 'org.example'
 version '1.0-SNAPSHOT'
-sourceCompatibility = 1.8
+sourceCompatibility = 8
 tasks.withType(JavaCompile).configureEach {
     options.encoding = "UTF-8"
 }
 
 repositories {
     maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
-    mavenCentral()
 }
 
 dependencies {
@@ -19,6 +18,7 @@ dependencies {
     implementation 'commons-io:commons-io:2.11.0'
     implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4'
     implementation 'org.apache.httpcomponents.client5:httpclient5:5.2.1'
+    implementation 'com.aliyun.openservices:aliyun-log-producer:0.3.11'
     testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
     testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
     compileOnly 'org.projectlombok:lombok:1.18.24'
@@ -31,7 +31,7 @@ jar {
     manifest {
         attributes(
                 "Manifest-Version": 1.0,
-                "Main-Class": "org.example.HttpTest")
+                "Main-Class": "org.example.Daka")
     }
 
     archiveFileName = 'app.jar'
@@ -46,3 +46,4 @@ test {
     useJUnitPlatform()
 }
 
+targetCompatibility = JavaVersion.VERSION_16

+ 129 - 0
src/main/java/org/example/AliyunLogger.java

@@ -0,0 +1,129 @@
+package org.example;
+
+import com.aliyun.openservices.aliyun.log.producer.LogProducer;
+import com.aliyun.openservices.aliyun.log.producer.Producer;
+import com.aliyun.openservices.aliyun.log.producer.ProducerConfig;
+import com.aliyun.openservices.aliyun.log.producer.ProjectConfig;
+import com.aliyun.openservices.aliyun.log.producer.errors.ProducerException;
+import com.aliyun.openservices.log.common.LogItem;
+import lombok.SneakyThrows;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+public class AliyunLogger {
+    private Producer producer;
+    private String logStore = "java-log";
+    private final String project = "k8s-log-c4d23a31b8c6c4ed49e7fc1473dfd0c57";
+
+    private final String app = "daka";
+
+
+    public void init() {
+
+
+        ProducerConfig producerConfig = new ProducerConfig();
+        producerConfig.setBatchSizeThresholdInBytes(3 * 1024 * 1024);
+        producerConfig.setBatchCountThreshold(40960);
+
+        producer = new LogProducer(producerConfig);
+        producer.putProjectConfig(new ProjectConfig(project,
+                "cn-chengdu.log.aliyuncs.com",
+                "LTAI5tCb5r8efPipWaKSeCkE", "BsKtHRePUFBrfF9aA8b8sDTrox23cU"));
+
+        Runtime.getRuntime().addShutdownHook(new Thread(this::close));
+    }
+
+    public void debug(Object... kv) {
+        try {
+            LogItem item = log(kv);
+            item.PushBack("level", "debug");
+            producer.send(project, logStore, item);
+        } catch (InterruptedException | ProducerException ignored) {
+        }
+    }
+
+    public void info(Object... kv) {
+        try {
+            LogItem item = log(kv);
+            item.PushBack("level", "info");
+            producer.send(project, logStore, item);
+        } catch (InterruptedException | ProducerException ignored) {
+        }
+    }
+
+    public void error(Object... kv) {
+        try {
+            LogItem item = log(kv);
+            item.PushBack("level", "error");
+            producer.send(project, logStore, item);
+        } catch (InterruptedException | ProducerException ignored) {
+        }
+    }
+
+    public void warn(Object... kv) {
+        try {
+            LogItem item = log(kv);
+            item.PushBack("level", "warn");
+            producer.send(project, logStore, item);
+        } catch (InterruptedException | ProducerException ignored) {
+        }
+    }
+
+    private LogItem log(Object... kv) {
+        LogItem item = new LogItem();
+        item.PushBack("app", app);
+        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+        if (stackTrace.length >= 4) {
+            StackTraceElement traceElement = stackTrace[3];
+            item.PushBack("at", traceElement.getClassName() + "." + traceElement.getMethodName()
+                    + "(" + traceElement.getFileName() + ":" + traceElement.getLineNumber() + ")");
+        }
+
+        int length = kv.length;
+        if (length % 2 != 0) {
+            return item;
+        }
+        for (int i = 0; i < kv.length; i += 2) {
+            if (kv[i] == null) {
+                continue;
+            }
+            item.PushBack(kv[i].toString(), format(kv[i + 1]));
+        }
+        return item;
+    }
+
+    @SneakyThrows
+    private String format(Object obj) {
+        if (obj == null) {
+            return "";
+        }
+        if (obj instanceof Throwable) {
+            StringWriter sw = new StringWriter();
+            Throwable err = (Throwable) obj;
+            err.printStackTrace(new PrintWriter(sw, true));
+            return sw.getBuffer().toString();
+        }
+
+        return obj.toString();
+    }
+
+
+    private void close() {
+        try {
+            producer.close();
+        } catch (InterruptedException | ProducerException ignored) {
+        }
+    }
+
+    public static void main(String[] args) {
+        AliyunLogger aliyunLogger = new AliyunLogger();
+        aliyunLogger.init();
+
+        aliyunLogger.info("msg", "123");
+        aliyunLogger.info("msg", 1);
+        aliyunLogger.info("msg", new RuntimeException("what"));
+
+        aliyunLogger.close();
+    }
+}

+ 7 - 5
src/main/java/org/example/Daka.java

@@ -15,8 +15,11 @@ import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.Random;
 
+// 10 8,18 * * mon,tue,wed,thu,fri /opt/jdk1.8.0_211/bin/java -jar /home/zyx/jar/app.jar
 public class Daka {
 
+    private static AliyunLogger logger = new AliyunLogger();
+
     private static String randomStr() {
         Random random = new Random();
         StringBuilder randomNumber = new StringBuilder();
@@ -67,7 +70,7 @@ public class Daka {
             InputStream inputStream = response.getEntity().getContent();
             return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
         });
-        System.out.println(body);
+        logger.info("data", body);
     }
 
     @SneakyThrows
@@ -80,13 +83,12 @@ public class Daka {
         httpPost.setHeaders(new BasicHeader("sendtime", String.valueOf(System.currentTimeMillis() / 1000)));
 
         StringEntity entity = new StringEntity("{\"deviceCode\":\"66361943-4EBB-4474-82E1-371CD3C2F768\",\"password\":\"qwjZCXeZeUZBWcH/zHOqWQ==\",\"client\":\"iphone\",\"login_mobliephone\":\"rSF3HKzE2Q2wAcJCP6ib+g==\",\"deviceID\":\"Y04KaZ0081eL5uBHOLHzLjkw7wZDnqXJKWOszrzQV1hy6VAHCUCirUWSdZ\n" +
-                "KxDosJUcvmCYTI2Rytqm62MzTFFYe3HZZUM+k55iYnzwWnpPfdHWTnAi4u+Cyb0VcIVGOBjeq7sVO\\\\/ugAq0jngW\\\\/nQHAxKnLdD2ynzj0i07eS25h4=\",\"timezone\":\"GMT+08:00\",\"sendTime\":\"" + sendTime + "\",\"name\":\"rSF3HKzE2Q2wAcJCP6ib+g==\"}", ContentType.APPLICATION_JSON);
+                "KxDosJUcvmCYTI2Rytqm62MzTFFYe3HZZUM+k55iYnzwWnpPfdHWTnAi4u+Cyb0VcIVGOBjeq7sVO/ugAq0jngW/nQHAxKnLdD2ynzj0i07eS25h4=\",\"timezone\":\"GMT+08:00\",\"sendTime\":\"" + sendTime + "\",\"name\":\"rSF3HKzE2Q2wAcJCP6ib+g==\"}", ContentType.APPLICATION_JSON);
         httpPost.setEntity(entity);
 
         return client.execute(httpPost, response -> {
-            InputStream inputStream = response.getEntity().getContent();
-            String body = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-            System.out.println(body);
+//            InputStream inputStream = response.getEntity().getContent();
+//            String body = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
             for (Header header : response.getHeaders()) {
                 String name = header.getName();
                 if ("Set-Cookie".equals(name)) {