summaryrefslogtreecommitdiff
path: root/src/mongo/logger/rotatable_file_writer.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2014-06-05 14:55:52 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2014-06-06 18:19:01 -0400
commit616461d294bd9f5054ca38b302b6fc5d70fde20c (patch)
tree671cd2efc28166c2a8cb9d6273954e5a38ea5255 /src/mongo/logger/rotatable_file_writer.cpp
parentdae863af3f695fe98c16473ca07d79fb106121c0 (diff)
downloadmongo-616461d294bd9f5054ca38b302b6fc5d70fde20c.tar.gz
SERVER-4905: add flag to disable mongo's builtin log rotation
To support the standalone utility, we need to give administrators support for disabling Mongo's builtin log rotation.
Diffstat (limited to 'src/mongo/logger/rotatable_file_writer.cpp')
-rw-r--r--src/mongo/logger/rotatable_file_writer.cpp39
1 files changed, 21 insertions, 18 deletions
diff --git a/src/mongo/logger/rotatable_file_writer.cpp b/src/mongo/logger/rotatable_file_writer.cpp
index 8b456e3f9fc..ee7e174e55a 100644
--- a/src/mongo/logger/rotatable_file_writer.cpp
+++ b/src/mongo/logger/rotatable_file_writer.cpp
@@ -251,28 +251,31 @@ namespace {
return _openFileStream(append);
}
- Status RotatableFileWriter::Use::rotate(const std::string& renameTarget) {
+ Status RotatableFileWriter::Use::rotate(bool renameOnRotate, const std::string& renameTarget) {
if (_writer->_stream) {
_writer->_stream->flush();
- try {
- if (boost::filesystem::exists(renameTarget)) {
- return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() <<
- "Renaming file " << _writer->_fileName << " to " <<
- renameTarget << " failed; destination already exists");
+
+ if(renameOnRotate) {
+ try {
+ if (boost::filesystem::exists(renameTarget)) {
+ return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() <<
+ "Renaming file " << _writer->_fileName << " to " <<
+ renameTarget << " failed; destination already exists");
+ }
+ } catch (const std::exception& e) {
+ return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() <<
+ "Renaming file " << _writer->_fileName << " to " <<
+ renameTarget << " failed; Cannot verify whether destination "
+ "already exists: " << e.what());
}
- } catch (const std::exception& e) {
- return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() <<
- "Renaming file " << _writer->_fileName << " to " <<
- renameTarget << " failed; Cannot verify whether destination "
- "already exists: " << e.what());
- }
- if (0 != renameFile(_writer->_fileName, renameTarget)) {
- return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() <<
- "Failed to rename \"" << _writer->_fileName << "\" to \"" <<
- renameTarget << "\": " << strerror(errno) << " (" << errno << ')');
- //TODO(schwerin): Make errnoWithDescription() available in the logger library, and
- //use it here.
+ if (0 != renameFile(_writer->_fileName, renameTarget)) {
+ return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() <<
+ "Failed to rename \"" << _writer->_fileName << "\" to \"" <<
+ renameTarget << "\": " << strerror(errno) << " (" << errno << ')');
+ //TODO(schwerin): Make errnoWithDescription() available in the logger library, and
+ //use it here.
+ }
}
}
return _openFileStream(false);