Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ RUN gu install native-image
WORKDIR /root/hildr
COPY . .
RUN ./gradlew buildJarForDocker
RUN cd /root/hildr/hildr-node/build/docker && native-image -jar hildr-node.jar --static --initialize-at-build-time=ch.qos.logback,org.slf4j,io.opentelemetry,java.io hildr-node
RUN cd /root/hildr/hildr-node/build/docker && \
native-image -jar hildr-node.jar --no-fallback --static --initialize-at-build-time=java.io.FileDescriptor,org.slf4j.MDC,io.opentelemetry.context,io.opentelemetry.api,io.opentelemetry.context,ch.qos.logback,io.netty.channel.AbstractChannel,org.slf4j.LoggerFactory hildr-node

FROM eclipse-temurin:19-jdk

Expand Down
2 changes: 1 addition & 1 deletion hildr-node/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ task buildBinary {
exec {
workingDir buildBinaryDir
executable "sh"
args "-c", "native-image -jar ${project.name}.jar --static --initialize-at-build-time=ch.qos.logback,org.slf4j,io.opentelemetry,java.io ${project.name}"
args "-c", "native-image -jar ${project.name}.jar --static --initialize-at-build-time=ch.qos.logback,org.slf4j,io.opentelemetry,java.io,io.netty ${project.name}"
standardOutput out
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package io.optimism.log;

import ch.qos.logback.core.rolling.RollingFileAppender;

/**
* lazy init rolling file appender
*
* @author thinkAfCod
* @since 2023.06
*/
public class LazyInitRollingFileAppender<E> extends RollingFileAppender<E> {
private boolean started = false;

@Override
public void start() {
if (!inGraalImageBuildtimeCode()) {
super.start();
this.started = true;
}

}

/**
* This method is synchronized to avoid double start from doAppender().
*/
protected void maybeStart() {
lock.lock();
try {
if (!started)
this.start();
} finally {
lock.unlock();
}
}

@Override
public void doAppend(E eventObject) {
if (!inGraalImageBuildtimeCode()) {
if (!started)
maybeStart();

super.doAppend(eventObject);
}
}


//THE BELOW CODE CAN BE SUBSTITUTED BY ImageInfo.inImageBuildtimeCode() if you have it on your classpath

private static final String PROPERTY_IMAGE_CODE_VALUE_BUILDTIME = "buildtime";
private static final String PROPERTY_IMAGE_CODE_KEY = "org.graalvm.nativeimage.imagecode";

/**
* Returns true if (at the time of the call) code is executing in the context of Graal native image building
* (e.g. in a static initializer of class that will be contained in the image).
* Copy of graal code in org.graalvm.nativeimage.ImageInfo.inImageBuildtimeCode().
* https://github.com/oracle/graal/blob/master/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/ImageInfo.java
*/
private static boolean inGraalImageBuildtimeCode() {
return PROPERTY_IMAGE_CODE_VALUE_BUILDTIME.equals(System.getProperty(PROPERTY_IMAGE_CODE_KEY));
}

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
[{
"name" : "com.sample.ColorConverter",
"allPublicConstructors": true,
"allPublicMethods": true,
"allDeclaredMethods": true
},
{
"name": "ch.qos.logback.classic.pattern.DateConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.MessageConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.ThrowableProxyConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.NopThrowableInformationConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.ContextNameConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BoldYellowCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.LoggerConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.ReplacingCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BoldBlueCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.CyanCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.RedCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.WhiteCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.PropertyConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.MethodOfCallerConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.LevelConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.IdentityCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BoldWhiteCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.MarkerConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BoldCyanCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BoldMagentaCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.RelativeTimeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.MagentaCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.ClassOfCallerConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.LineOfCallerConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.FileOfCallerConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BoldGreenCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.LocalSequenceNumberConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.YellowCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.GrayCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.MDCConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.ClassOfCallerConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BoldRedCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.GreenCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.core.pattern.color.BlackCompositeConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.ThreadConverter",
"allDeclaredConstructors": true
},
{
"name": "ch.qos.logback.classic.pattern.LineSeparatorConverter",
"allDeclaredConstructors": true
}
]
2 changes: 1 addition & 1 deletion hildr-node/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
</encoder>
</appender>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<appender name="FILE" class="io.optimism.log.LazyInitRollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>app-%d{yyyy-MM-dd HH}.gz</fileNamePattern>
Expand Down