blob: 3e10a1bc737c14d234a1466c2bf7334073dfca76 [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CROSLOG_LOG_ROTATOR_LOG_ROTATOR_H_
#define CROSLOG_LOG_ROTATOR_LOG_ROTATOR_H_
#include <base/files/file_path.h>
namespace log_rotator {
class LogRotator {
public:
// Constructor. |base_log_file| is the file path without any index number
// (eg. "/var/log/messages").
explicit LogRotator(base::FilePath base_log_path);
LogRotator(const LogRotator&) = delete;
LogRotator& operator=(const LogRotator&) = delete;
// Retrieve the log file path from the index number.
base::FilePath GetFilePathWithIndex(int index);
// Retrieve the index number from the log file path.
int GetIndexFromFilePath(const base::FilePath& log_path);
// Clean-up the files which are not necessary.
void CleanUpFiles(int max_index);
// Rotate the log files. This method keeps (|max_index| + 1) files in
// maximum, including the log file numbered |max_index|.
void RotateLogFile(int max_index);
// Create the base log file with copying the permission from the previous
// log files. It should be called after rotation.
void CreateNewBaseFile(int max_index);
private:
base::FilePath base_log_path_;
};
// Rotate the standard log files defined in kLogSources in |log_path_constant|.
void RotateStandardLogFiles();
} // namespace log_rotator
#endif // CROSLOG_LOG_ROTATOR_LOG_ROTATOR_H_