Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL Server Java语言扩展进行日志记录?_Java_Sql Server_Logging_Sql Server 2019 - Fatal编程技术网

如何使用SQL Server Java语言扩展进行日志记录?

如何使用SQL Server Java语言扩展进行日志记录?,java,sql-server,logging,sql-server-2019,Java,Sql Server,Logging,Sql Server 2019,我有一个Java程序,由SQL Server使用执行。Java程序使用logback将输出记录到文件中。以下是我的logback.xml配置: <configuration> <property name="USER_HOME" value="/var/data/" /> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${USER_HO

我有一个Java程序,由SQL Server使用执行。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>

${USER_HOME}/myApp.log
%d{yyyy-MM-dd HH:MM:ss.SSS}%-5级%logger{36}[%thread]-%msg%n
下面是类中的典型日志设置和语句:

@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
@Slf4j//使用lombok
公共类MyApp扩展了AbstractSqlServerExtensionExecutor{
公共MyApp(){
executorExtensionVersion=SQLSERVER\u JAVA\u LANG\u EXTENSION\u V1;
ExecutionInputDataSetClassName=PrimitiveDataset.class.getName();
executorOutputDatasetClassName=PrimitiveDataset.class.getName();
} 
公共PrimitiveDataset执行(PrimitiveDataset输入,
LinkedHashMap参数){
log.error(“hello world”);//在独立应用程序中调用时工作正常
在Windows计算机上作为独立应用程序(即java MyApp)运行程序时,日志记录工作正常。但是,当程序作为SQL Server语言扩展应用程序执行时,不会创建任何日志文件。我尝试将
${USER_HOME}/MyApp.log
更改为
MyApp.log
,但仍然找不到日志文件


是否有地方可以检查SQL Server日志,以了解为什么没有创建Java应用程序日志文件?当SQL Server语言扩展运行程序日志时,我如何获得该程序日志?我怀疑该程序可能会被阻止(沙盒)通过SQL Server写入文件系统。

只需执行此测试,将日志文件位置更改为SQL Server服务运行帐户可以访问的文件夹,例如数据库数据文件文件夹,并查看是否创建了日志。感谢您的建议。我只是尝试在SSMS消息控制台上收到以下错误,即使在r将所有人的文件夹权限更改为
完全控制
ch.qos.logback.core.FileAppender[FILE]-openFile中的错误(/Program Files/Microsoft SQL Server/MSSQL15.MSSQLSERVER/MSSQL/DATA/myApp.log,true)调用失败。java.io.FileNotFoundException:\Program Files\Microsoft SQL Server\MSSQLS15.MSSQLSERVER\MSSQL\DATA\myApp.log(访问被拒绝)