我有一个由 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 可能会阻止(沙盒)程序写入文件系统。