2

我有一个由 SQL Server 使用SQL Server 的 Java 语言扩展执行的 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

在 Windows 机器上将程序作为独立应用程序(即 java MyApp)运行时,日志记录工作正常。但是,当程序作为 SQL Server 语言扩展应用程序执行时,不会创建日志文件。我尝试更改<file>${USER_HOME}/myApp.log</file><file>myApp.log</file>但仍然找不到日志文件。

有没有地方可以检查 SQL Server 日志以查看为什么没有创建 Java 应用程序日志文件?程序日志由 SQL Server 语言扩展运行时如何获取?我怀疑 SQL Server 可能会阻止(沙盒)程序写入文件系统。

4

0 回答 0