在程序中实现完成保存模拟的用户日志数据和实现对日志数据的查询输出
时间: 2024-02-18 18:01:49 浏览: 91
atm_file.rar_ATMS_atm_java ATM 模拟_实现提款机_银行数据文件
好的,以下是一个简单的 Java 程序,实现了保存模拟的用户日志数据到 MongoDB 数据库中,并实现了查询输出的功能。
首先,需要引入 MongoDB 的 Java 客户端驱动,可以在 Maven 中加入以下依赖:
```
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.8</version>
</dependency>
```
然后,可以创建一个 Log 类,用于存储日志信息:
```
public class Log {
private String level;
private String message;
private String stackTrace;
private Date createdTime;
// getters and setters
}
```
接下来,可以创建一个 MongoDBUtil 类,用于创建 MongoDB 的连接:
```
public class MongoDBUtil {
public static MongoClient getMongoClient() {
MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
return new MongoClient(uri);
}
}
```
然后,可以创建一个 LogDAO 类,用于实现对 MongoDB 的操作:
```
public class LogDAO {
private MongoClient mongoClient;
private MongoCollection<Document> collection;
public LogDAO() {
mongoClient = MongoDBUtil.getMongoClient();
MongoDatabase database = mongoClient.getDatabase("test");
collection = database.getCollection("log");
}
public void saveLog(Log log) {
Document doc = new Document("level", log.getLevel())
.append("message", log.getMessage())
.append("stackTrace", log.getStackTrace())
.append("createdTime", log.getCreatedTime());
collection.insertOne(doc);
}
public List<Log> queryLog() {
List<Log> logs = new ArrayList<>();
FindIterable<Document> iterable = collection.find();
iterable.forEach(doc -> {
Log log = new Log();
log.setLevel(doc.getString("level"));
log.setMessage(doc.getString("message"));
log.setStackTrace(doc.getString("stackTrace"));
log.setCreatedTime(doc.getDate("createdTime"));
logs.add(log);
});
return logs;
}
public void close() {
mongoClient.close();
}
}
```
最后,可以创建一个 Main 类,用于测试 LogDAO 类中的方法:
```
public class Main {
public static void main(String[] args) {
LogDAO dao = new LogDAO();
Log log = new Log();
log.setLevel("ERROR");
log.setMessage("This is a test error message.");
log.setStackTrace("java.lang.NullPointerException: Test");
log.setCreatedTime(new Date());
dao.saveLog(log);
List<Log> logs = dao.queryLog();
logs.forEach(l -> System.out.println(l.getLevel() + ": " + l.getMessage()));
dao.close();
}
}
```
运行该程序,可以看到输出了查询到的日志信息。
阅读全文