Skip to content

Commit

Permalink
[Java] Update rolling logging configuration (ray-project#17741)
Browse files Browse the repository at this point in the history
  • Loading branch information
kfstorm committed Aug 12, 2021
1 parent 6d6a1ea commit ab53c5f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
18 changes: 14 additions & 4 deletions java/runtime/src/main/java/io/ray/runtime/util/LoggingUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.typesafe.config.Config;
import io.ray.runtime.config.RayConfig;
import io.ray.runtime.generated.Common.WorkerType;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
Expand Down Expand Up @@ -59,6 +60,14 @@ public static synchronized void setupLogging(RayConfig rayConfig) {
rayConfig.logDir + "/java-worker-" + jobIdHex + "-" + SystemUtil.pid() + ".log";
String rollingLogPath =
rayConfig.logDir + "/java-worker-" + jobIdHex + "-" + SystemUtil.pid() + ".%i.log";
String maxFileSize = System.getenv("RAY_ROTATION_MAX_BYTES");
if (StringUtils.isEmpty(maxFileSize)) {
maxFileSize = rayConfig.getInternalConfig().getString("ray.logging.max-file-size");
}
String maxBackupFiles = System.getenv("RAY_ROTATION_BACKUP_COUNT");
if (StringUtils.isEmpty(maxBackupFiles)) {
maxBackupFiles = rayConfig.getInternalConfig().getString("ray.logging.max-backup-files");
}

ConfigurationBuilder<BuiltConfiguration> builder =
ConfigurationBuilderFactory.newConfigurationBuilder();
Expand All @@ -80,16 +89,17 @@ public static synchronized void setupLogging(RayConfig rayConfig) {
.addComponent(
builder
.newComponent("SizeBasedTriggeringPolicy")
.addAttribute(
"size",
rayConfig.getInternalConfig().getString("ray.logging.max-file-size")));
.addAttribute("size", maxFileSize));
ComponentBuilder rolloverStrategy =
builder.newComponent("DefaultRolloverStrategy").addAttribute("max", maxBackupFiles);
AppenderComponentBuilder appenderBuilder =
builder
.newAppender("LogToRollingFile", "RollingFile")
.addAttribute("fileName", logPath)
.addAttribute("filePattern", rollingLogPath)
.add(layoutBuilder)
.addComponent(triggeringPolicy);
.addComponent(triggeringPolicy)
.addComponent(rolloverStrategy);
builder.add(appenderBuilder);
rootLogger.add(builder.newAppenderRef("LogToRollingFile"));
builder.add(rootLogger);
Expand Down
6 changes: 4 additions & 2 deletions java/test/src/main/java/io/ray/test/RayJavaLoggingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ public boolean log() {
public void testJavaLoggingRotate() {
ActorHandle<HeavyLoggingActor> loggingActor =
Ray.actor(HeavyLoggingActor::new)
.setJvmOptions(ImmutableList.of("-Dray.logging.max-file-size=1MB"))
.setJvmOptions(
ImmutableList.of(
"-Dray.logging.max-file-size=1MB", "-Dray.logging.max-backup-files=3"))
.remote();
Assert.assertTrue(loggingActor.task(HeavyLoggingActor::log).remote().get());
final int pid = loggingActor.task(HeavyLoggingActor::getPid).remote().get();
final JobId jobId = Ray.getRuntimeContext().getCurrentJobId();
String currLogDir = "/tmp/ray/session_latest/logs";
for (int i = 1; i < 8; ++i) {
for (int i = 1; i <= 3; ++i) {
File rotatedFile =
new File(String.format("%s/java-worker-%s-%d.%d.log", currLogDir, jobId, pid, i));
Assert.assertTrue(rotatedFile.exists());
Expand Down

0 comments on commit ab53c5f

Please sign in to comment.