@@ -196,6 +196,10 @@ void RayLog::StartRayLog(const std::string &app_name, RayLogLevel severity_thres
196196 app_name_ = app_name;
197197 log_dir_ = log_dir;
198198
199+ // All the logging sinks to add.
200+ std::vector<spdlog::sink_ptr> sinks;
201+ auto level = static_cast <spdlog::level::level_enum>(severity_threshold_);
202+
199203 if (!log_dir_.empty ()) {
200204 // Enable log file if log_dir_ is not empty.
201205 std::string dir_ends_with_slash = log_dir_;
@@ -243,26 +247,32 @@ void RayLog::StartRayLog(const std::string &app_name, RayLogLevel severity_thres
243247 // logger.
244248 spdlog::drop (RayLog::GetLoggerName ());
245249 }
246- file_logger = spdlog::rotating_logger_mt (
247- RayLog::GetLoggerName (),
250+ auto file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(
248251 dir_ends_with_slash + app_name_without_path + " _" + std::to_string (pid) + " .log" ,
249252 log_rotation_max_size_, log_rotation_file_num_);
250- spdlog::set_default_logger (file_logger );
253+ sinks. push_back (file_sink );
251254 } else {
252255 auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
253256 console_sink->set_pattern (log_format_pattern_);
254- auto level = static_cast <spdlog::level::level_enum>(severity_threshold_);
255257 console_sink->set_level (level);
256-
257- auto err_sink = std::make_shared<spdlog::sinks::stderr_color_sink_mt>();
258- err_sink->set_pattern (log_format_pattern_);
259- err_sink->set_level (spdlog::level::err);
260-
261- auto logger = std::shared_ptr<spdlog::logger>(
262- new spdlog::logger (RayLog::GetLoggerName (), {console_sink, err_sink}));
263- logger->set_level (level);
264- spdlog::set_default_logger (logger);
258+ sinks.push_back (console_sink);
265259 }
260+
261+ // In all cases, log errors to the console log so they are in driver logs.
262+ // https://github.com/ray-project/ray/issues/12893
263+ auto err_sink = std::make_shared<spdlog::sinks::stderr_color_sink_mt>();
264+ err_sink->set_pattern (log_format_pattern_);
265+ err_sink->set_level (spdlog::level::err);
266+ sinks.push_back (err_sink);
267+
268+ // Set the combined logger.
269+ auto logger = std::make_shared<spdlog::logger>(RayLog::GetLoggerName (), sinks.begin (),
270+ sinks.end ());
271+ logger->set_level (level);
272+ logger->set_pattern (log_format_pattern_);
273+ spdlog::set_level (static_cast <spdlog::level::level_enum>(severity_threshold_));
274+ spdlog::set_pattern (log_format_pattern_);
275+ spdlog::set_default_logger (logger);
266276}
267277
268278void RayLog::UninstallSignalAction () {
0 commit comments