Anonymous
Журнал регистрации исходного изображения Java 17+
Сообщение
Anonymous » 29 сен 2024, 18:57
Как настроить maven для компиляции собственного образа с журналированием?
это моя среда:
Код: Выделить всё
ch.qos.logback
logback-core
ch.qos.logback
logback-classic
org.slf4j
slf4j-api
org.graalvm.buildtools
native-maven-plugin
output
ir.moke.ni.MainClass
--initialize-at-build-time=ch.qos.logback,org.slf4j
-H:ReflectionConfigurationFiles=src/main/resources/META-INF/reflection-config.json
-H:IncludeResources=logback.xml
-H:+UnlockExperimentalVMOptions
-H:Log=registerResource:5
--initialize-at-build-time=ch.qos.logback,org.slf4j
logback.xml:
Код: Выделить всё
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
reflection-config.json:
Код: Выделить всё
[
{
"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
}
]
мой простой основной класс:
Код: Выделить всё
package ir.moke.ni;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MainClass {
private static final Logger logger = LoggerFactory.getLogger(MainClass.class);
static {
System.out.println("Application started");
}
public static void main(String[] args) {
logger.info("This is INFO log");
logger.warn("This is WARN log");
logger.debug("This is DEBUG log");
logger.error("This is ERROR log");
logger.trace("This is TRACE log");
}
}
а это дерево каталогов:
Код: Выделить всё
logback-project/
├── pom.xml
└── src
└── main
├── java
│ └── ir
│ └── moke
│ └── ni
│ └── MainClass.java
└── resources
├── logback.xml
└── META-INF
└── reflection-config.json
Проект без проблем генерирует собственное изображение, но журнал не работает!
Как решить эту проблему?
Примечание: я пытаюсь делаю серию образовательных проектов о нативном имидже, Но не могу решить этот случай!! Репозиторий учебного проекта
ОБНОВЛЕНИЕ:
Интересно, я реализую журналирование программно (без logback.xml ) , этот проект работает без проблем .
Подробнее здесь:
https://stackoverflow.com/questions/778 ... ge-logback
1727625441
Anonymous
Как настроить maven для компиляции собственного образа с журналированием? это моя среда: [code] ch.qos.logback logback-core ch.qos.logback logback-classic org.slf4j slf4j-api org.graalvm.buildtools native-maven-plugin output ir.moke.ni.MainClass --initialize-at-build-time=ch.qos.logback,org.slf4j -H:ReflectionConfigurationFiles=src/main/resources/META-INF/reflection-config.json -H:IncludeResources=logback.xml -H:+UnlockExperimentalVMOptions -H:Log=registerResource:5 --initialize-at-build-time=ch.qos.logback,org.slf4j [/code] logback.xml: [code] %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n [/code] reflection-config.json: [code][ { "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 } ] [/code] мой простой основной класс: [code]package ir.moke.ni; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MainClass { private static final Logger logger = LoggerFactory.getLogger(MainClass.class); static { System.out.println("Application started"); } public static void main(String[] args) { logger.info("This is INFO log"); logger.warn("This is WARN log"); logger.debug("This is DEBUG log"); logger.error("This is ERROR log"); logger.trace("This is TRACE log"); } } [/code] а это дерево каталогов: [code]logback-project/ ├── pom.xml └── src └── main ├── java │ └── ir │ └── moke │ └── ni │ └── MainClass.java └── resources ├── logback.xml └── META-INF └── reflection-config.json [/code] Проект без проблем генерирует собственное изображение, но журнал не работает! Как решить эту проблему? Примечание: я пытаюсь делаю серию образовательных проектов о нативном имидже, Но не могу решить этот случай!! Репозиторий учебного проекта [b]ОБНОВЛЕНИЕ:[/b] Интересно, я реализую журналирование программно (без logback.xml ) , этот проект работает без проблем . Подробнее здесь: [url]https://stackoverflow.com/questions/77871016/java-17-native-image-logback[/url]