Appender anpassen ist sehr einfach, erben Sie einfach die AppenderBase-Klasse.
Sie können sehen, dass es eine AppenderBase, eine UnsynchronizedAppenderBase und eine AsyncAppenderBase gibt, die UnsynchronizedAppenderBase erbt. Der Unterschied ist am Namen zu erkennen: asynchron, gewöhnlich und entsperrt.
Wir definieren einen MongoDBAppender, der UnsynchronizedAppenderBase
public class MongoDBAppender extends UnsynchronizedAppenderBase<ILoggingEvent> { @Override protected void append(ILoggingEvent eventObject) { MongoTemplate mongoTemplate = ApplicationContextProvider.getBean(MongoTemplate.class); if (mongoTemplate != null) { final BasicDBObject doc = new BasicDBObject(); doc.append("level", eventObject.getLevel().toString()); doc.append("logger", eventObject.getLoggerName()); doc.append("thread", eventObject.getThreadName()); doc.append("message", eventObject.getFormattedMessage()); mongoTemplate.insert(doc, "log"); } } }erbt und eine Append-Methode implementieren muss. Bei dieser Methode werden die Protokolle im EventObject-Objekt gespeichert Eigene Bearbeitung.
@Component public class ApplicationContextProvider implements ApplicationContextAware { private static ApplicationContext context; public static ApplicationContext getApplicationContext() { return context; } @Override public void setApplicationContext(ApplicationContext ac) throws BeansException { context = ac; } public static <T> T getBean(Class<T> tClass) { return context.getBean(tClass); } public static <T> T getBean(String name, Class<T> tClass) { return context.getBean(name, tClass); } }Der obige Mongo-Vorgangsprotokollspeicher ist relativ einfach und die Felder werden nicht aufgebraucht. Sie können die Mongo-Struktur entsprechend den Attributen entwerfen, die Sie speichern möchten, und sie dann in der Datenbank speichern .
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.11</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.11</version> </dependency>Es ist auch sehr einfach in Spring-logback.xml zu verwenden
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <appender name="MY_FILE" class="com.example.demo.mongo.MongoDBAppender"> </appender> <!-- 测试环境+开发环境. 多个使用逗号隔开. --> <springProfile name="test,dev"> <logger name="org.springframework.web" level="INFO"> <appender-ref ref="MY_FILE"/> </logger> <logger name="com.example" level="INFO" /> </springProfile> </configuration>Sie müssen nur die Appender-Klasse angeben.
Das obige ist der detaillierte Inhalt vonSo speichern Sie Logback-Protokolle in MongoDB in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!