0
点赞
收藏
分享

微信扫一扫

JVM(HotSpot):GC之垃圾标记阶段

E_topia 2024-11-05 阅读 5

0 前言

为什么要把日志存到数据库里?

因为结构化的数据库存储的日志信息,可以写专门的软件读取历史日志信息,通过各种条件筛选,可操作性极大增强,有这方面需求的开发人员可以考虑。

为什么选择SQLite?

轻量级数据库,免安装,数据库的常用的基本功能都有,可以随程序迁移到不同的电脑上使用。

1 安装包

两个包:

  • log4net
  • System.Data.SQLite

第二个包也可以使用Microsoft.Data.Sqlite,查到的资料显示如果环境使用的是 .NET Core 或 .NET 5+,建议使用Microsoft.Data.Sqlite。但是我并没有测试第二个包,可能使用上有区别。

2 下载Sqlite

如果本地没有sqlite环境的话,需要先下载。官网下载链接

进去之后直接找各自环境对应的版本,如果是windows环境的话,直接下载下图中标记的tool,中间那个下载链接是下载sqlite3.dll,不过我并不清楚如何使用,有知道的大佬可以在评论区交流一下。

tool解压之后有如下几个文件,双击打开sqlite3.exe即可。

3 Sqlite常用命令

打开是一个命令行界面,可以使用.help查看常用的命令及解释。

.help

创建数据库文件使用.open xxx,这条语句,如果发现数据库文件存在,就会直接打开,如果不存在,就会先创建再打开。

.open test.db

在目录内可以看到创建的数据库文件。(划重点,这个文件拷到程序中就可以直接使用sqlite数据库,充分体现了轻量级的魅力)

.databases可以查询所有数据库文件

.tables可以查询所有表(我还未创建,所以目前还没有表)

sql语句请自行查询相关资料。

查询的数据以标准格式显示。

.header on
.mode column
SELECT * FROM COMPANY;

当然sqlite也有可视化的软件,但是我目前没用到,所以没有下载安装,需要的话可以自行查询。

4 创建日志相关基本表

使用命令创建日志表,包含id(使用自增,当然可以换成uuid或者其它形式)、日期、线程号、级别(info、error这些)、记录者、具体记录的信息、异常信息。具体内容要对应log4net的配置。

CREATE TABLE Log (
  Id INTEGER PRIMARY KEY AUTOINCREMENT,
  Date DATETIME,
  Thread VARCHAR(255),
  Level VARCHAR(50),
  Logger VARCHAR(255),
  Message TEXT,
  Exception TEXT
);

5 log4net配置

更换数据库连接。sql语句的内容一定要对应数据库基本表的字段。

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SQLite.SQLiteConnecti
举报

相关推荐

0 条评论