73 : base_filename_selected_(base_filename != nullptr),
74 base_filename_((base_filename != nullptr) ? base_filename :
""),
75 symlink_basename_(
"UNKNOWN"),
76 filename_extension_(),
79 bytes_since_flush_(0),
81 rollover_attempt_(kRolloverAttemptFrequency - 1),
83 if (base_filename_.empty()) {
84 base_filename_ =
"UNKNOWN";
86 assert(severity >= 0);
87 assert(severity < NUM_SEVERITIES);
205 const char* message,
int message_len) {
206 std::lock_guard<std::mutex> lock(lock_);
209 if (base_filename_selected_ && base_filename_.empty()) {
214 if (file_ !=
nullptr) {
218 file_length_ = bytes_since_flush_ = 0;
219 rollover_attempt_ = kRolloverAttemptFrequency - 1;
223 if (file_ ==
nullptr) {
227 if (++rollover_attempt_ != kRolloverAttemptFrequency) {
230 rollover_attempt_ = 0;
233 localtime_r(×tamp, &tm_time);
236 ostringstream time_pid_stream;
237 time_pid_stream.fill(
'0');
238 time_pid_stream << 1900 + tm_time.tm_year << setw(2) << 1 + tm_time.tm_mon
239 << setw(2) << tm_time.tm_mday <<
'-' << setw(2)
240 << tm_time.tm_hour << setw(2) << tm_time.tm_min << setw(2)
242 const string& time_pid_string = time_pid_stream.str();
245 if (base_filename_selected_) {
246 if (!CreateLogfile(time_pid_string)) {
247 perror(
"Could not create log file");
248 fprintf(stderr,
"COULD NOT CREATE LOGFILE '%s'!\n",
249 time_pid_string.c_str());
255 ostringstream file_header_stream;
256 file_header_stream.fill(
'0');
257 file_header_stream <<
"Log file created at: " << 1900 + tm_time.tm_year
258 <<
'/' << setw(2) << 1 + tm_time.tm_mon <<
'/' << setw(2)
259 << tm_time.tm_mday <<
' ' << setw(2) << tm_time.tm_hour
260 <<
':' << setw(2) << tm_time.tm_min <<
':' << setw(2)
261 << tm_time.tm_sec <<
'\n'
262 <<
"Running on machine: " <<
hostname() <<
'\n'
263 <<
"Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu "
264 <<
"threadid file:line] msg" <<
'\n';
265 const string& file_header_string = file_header_stream.str();
267 const int header_len =
static_cast<int>(file_header_string.size());
268 if (file_ ==
nullptr) {
271 fwrite(file_header_string.data(), 1, header_len, file_);
272 file_length_ += header_len;
273 bytes_since_flush_ += header_len;
284 fwrite(message, 1, message_len, file_);
285 if (FLAGS_stop_logging_if_full_disk &&
290 file_length_ += message_len;
291 bytes_since_flush_ += message_len;
295 stop_writing =
false;
302 if (force_flush || (bytes_since_flush_ >= 1000000) ||