Production 重启的过程包括了关闭Production和启动Production。

关闭Production的过程需要把所有活动Job中的消息放入队列中,这个过程如果发生在业务量非常大的时候,也就是job非常多,每个job中的待处理消息很多的时候会花费很长时间。

而启动Production的过程会逆向关闭的过程,恢复关闭前的job以及的消息,同样这个时间与关闭production前业务繁忙、队列的大小有关。

当关闭的时间过长,会提示是否需要“强制”关闭production,如果强制关闭,后果就是无法保证恢复关闭production前的业务。

如果想等待或设置较长的等待时间,可以在terminal中执行 Ens.Director 类的StopProduction函数:

ClassMethod StopProduction(pTimeout As %Numeric = 10, pForce As %Boolean = 0) As %Status

第一个参数设置超时时间,第二个参数设置是否强制关闭。

不知道你问题里的日志是不是指的journal文件。

没有直接读取journal的方法,只有类似MirrorDejournal的方法对写入异步镜像成员的journal进行操作,

比如将内容写入到你自己的一个数据global中。

在写journal的同时将journal中记录的内容存放在另一个地方。

具体做法可以参考社区里的另一篇文章:CDC系列之一 :使用Dejournal Filter在InterSystems IRIS/Caché上通过Mirroring实现CDC功能

对于较早版本还没有镜像Mirror的配置,则可以使用Shadow服务器的Dejournaling filter routine。

可以参考:CDC系列之二 :使用Dejournaling filter routine在Caché上通过Shadow实现CDC

IRIS 没有默认的删除备份文件的任务。

你可以通过命令$zf(-100)或者%File下面的Delete方法实现通过ObjectScript删除磁盘文件的操作,再将代码添加入定时任务中实现定时删除。

同时注意,不建议在生产环境将IRIS自带的在线备份工具作为灾备恢复使用,因为该工具仅仅备份 IRIS.Dat 中的内容,而这些内容对于灾难恢复是不够的。

推荐使用外部备份的方式进行备份,详细内容参见(https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI...

可以参考 %SYS.Journal.File.cls 这个类下的代码是如何使用$$$JRNNEWVAL(Address) 、$$$JRNOLDVAL(Address)的。

使用的产品版本是什么?Dejournal filter是在Mirror report类型的异步镜像成员做的还是在shadow上做的?不同给的版本对应不同的处理方式。

同时还是建议将问题提到WRC:support@intersystems.com,他们会给予更详细的错误分析以及解决方案。

注意文章中的提示:

1. $$$JRNNEWVAL(Address) 、$$$JRNOLDVAL(Address)`这2个宏定义在%syJrnRecord.inc文件里,因此需要将这个include文件加入ZCustom.MirrorDejournal类定义:Include %syJrnRecord

2.在InterSystems IRIS上修改并编译dejournal过滤器类后,需要重启异步镜像成员的Mirror,以使更改生效。

可以通过Ens.Config.Production 的 %OpenId 方法打开现有的Production,

新建一个Ens.Config.Item的对象,该对象对应于Production界面中的各个组件(BusinessHost)

再使用production.Items.Insert方法将该Item对象插入到现有Production中,就可实现使用代码的方式创建Production 的 BusinessHost。

同时可以通过创建Ens.Config.Setting的实例以及设置相关属性的方式,对创建的BusinessHost中的配置在代码中进行设定,比如设定加载BO的URL、凭据等。

  #Dim businessHost as Ens.Config.Item = ##class(Ens.Config.Item).%New()
  #Dim setting as Ens.Config.Setting = ##class(Ens.Config.Setting).%New()
  #Dim production as Ens.Config.Production = ##class(Ens.Config.Production).%OpenId("MyPkg.DemoProduction")
  Set setting.Name="WebServiceURL"
  Set setting.Value="http://localhost:52773/MyWS/Demo.Test.cls"
  Set businessHost.ClassName="MyPkg.Operation.HISWSOperation"
  Set businessHost.Name ="HIS web 服务"
  Set businessHost.Production = production
  Do businessHost.Settings.Insert(setting)
  Do production.Items.Insert(businessHost)
  Set tsc = production.%Save()
USER>set file="box.xml"
USER>set sc=$system.OBJ.Export("box.GBL",.file) 

Exportieren in XML gestartet am 06/08/2021 11:46:58
Exportiere Global: ^box
Export erfolgreich abgeschlossen. 

USER>$type box.XML 

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25" zv="IRIS for Windows (x86-64) 2021.1 (Build 209U)" ts="2021-06-08 11:46:58">
<Global>
<Node><Sub>^box</Sub>
<Node><Sub>1</Sub>
<Node><Sub>1</Sub>
<Data> </Data>
<Node><Sub>0</Sub>
<DataBase64>G1syOzRI
</DataBase64>
</Node>
<Node><Sub>1</Sub>
<Data>1</Data>
</Node>
<Node><Sub>2</Sub>
<Data>...456..9</Data>
</Node>
</Node>
<Node><Sub>2</Sub>
<Data> </Data>
<Node><Sub>0</Sub>
<DataBase64>G1syOzEwSA==
</DataBase64>
- - - -   removed ------- 
</Node>
</Node>
<Data> </Data>
USER>

我在 IRISHealth_Community-2020.1.1.408.0-win_x64 安装版本中可以看到该%Service_Telnet服务

注意服务名称前有%