Я использую log4j2 для входа в базу данных SQLite с помощью JDBCAppender. Я хочу знать, как лучше всего выполнить ротацию базы данных sqlite в зависимости от размера файла.
Что-то похожее на приложение «RollingFile», где мы можем указать «SizeBasedTriggeringPolicy» и вручную указать максимальный размер файла. Я просмотрел документы и не нашел способа, которым это может быть достигнуто по умолчанию.
Итак, я обошел его, как я его реализовал. .. Каждый раз, когда делается вызов БД для регистрации, запускается метод getConnection () в ConnectionFactory. Поэтому при каждом вызове этого метода я проверяю размер файла sqlite DB, и если он превышает максимальный размер файла, я просто возвращаю новую строку подключения, указывающую на новую базу данных.
public static Connection getConnection() throws SQLException {
Connection connection = null;
String connectString = getConnectionString(); // returns connect string of SQLite currently being used
if(isMaxFileSizeExceeded()) { // returns true if SQLite file exceeds max file limit
connectString = getNewConnectionString(); // returns connect string pointing to new SQLite DB
}
try {
connection = DriverManager.getConnection(connectString);
} catch (SQLException e) {
// throw exception
}
return connection;
}
Есть ли лучший способ сделать ротацию БД? Я считаю, что проверка размера файла для каждого вызова журнала - ненужные накладные расходы. Я хочу, насколько это возможно, избегать ручного кода и попытаться использовать для этого API log4j2.