У меня есть программа Java, которая выполняется SQL Server с использованием расширения языка SQL Server Java . Программа Java записывает вывод в файл, используя logback. Вот мой конфиг logback.xml:
<configuration>
<property name="USER_HOME" value="/var/data/" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/myApp.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} [%thread] - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
Вот типичные настройки и инструкции для журнала в классе:
@Slf4j // using lombok
public class MyApp extends AbstractSqlServerExtensionExecutor {
public MyApp() {
executorExtensionVersion = SQLSERVER_JAVA_LANG_EXTENSION_V1;
executorInputDatasetClassName = PrimitiveDataset.class.getName();
executorOutputDatasetClassName = PrimitiveDataset.class.getName();
}
public PrimitiveDataset execute(PrimitiveDataset input,
LinkedHashMap<String, Object> params) {
log.error("hello world"); // work fine when called in a standalone app
Ведение журнала отлично работает при запуске программы как отдельного приложения (то есть Java). MyApp) на компьютере с Windows. Однако когда программа выполняется как приложение SQL Server Language Extensions, файл журнала не создается. Я попытался изменить <file>${USER_HOME}/myApp.log</file>
на <file>myApp.log</file>
, но все еще не могу найти файл журнала.
Есть ли место для проверки журналов SQL Server, чтобы узнать, почему файл журнала приложения Java не создается? Как я могу получить журнал программы, когда он запускается расширением языка SQL Server? Я подозреваю, что программа SQL Server может предотвратить (песочницу) записи в файловую систему.