Как войти с помощью SQL Server Java Language Extension? - PullRequest
3 голосов
/ 04 октября 2019

У меня есть программа 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 может предотвратить (песочницу) записи в файловую систему.

...