我可以修改 Geode 的默认日志记录行为吗?
Can I modify Geode's default logging behavior?
Geode 开箱即用的日志记录行为不包括每行记录器的 "name"(通常是 class 调用 Log4j Logger
的名称) .我想将此字段添加到默认记录器配置,即记录到 <member-name>/<member-name>.log
.
的配置
使用 instructions from the documentation,我能够使用下面的配置成功配置一个 附加 记录器——它写入一个与默认文件不同的文件(logs/app.log
在这种情况下),但默认配置 也 仍然正常记录到默认文件。
我的期望是提供我自己的 log4j2.xml
会 覆盖 默认配置,而不是补充它。我能做些什么来覆盖默认记录器的行为吗?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="FATAL" shutdownHook="disable" packages="org.apache.geode.internal.logging.log4j">
<Properties>
<Property name="geode-pattern">[%level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} <%thread> tid=%tid] - %c - %message%n%throwable%n</Property>
<Property name="geode-default">true</Property>
</Properties>
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout pattern="${geode-pattern}"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
我没有看到你的配置有什么问题,实际上我只是在本地试了一下,成员只登录到配置文件而不是默认文件:
$> gfsh start locator --name=locator1 --J=-Dlog4j.configurationFile=$CURRENT_DIRECTORY/log4j-custom.xml
$> gfsh -e "connect" -e "start server --name=server1 --J=-Dlog4j.configurationFile=$CURRENT_DIRECTORY/log4j-custom.xml"
$> gfsh -e "connect" -e "shutdown --include-locators=true"
$> tree -L 3
.
├── gfsh-0_0.log
├── locator1
│ ├── ConfigDiskDir_locator1
│ │ ├── BACKUPcluster_config.if
│ │ ├── BACKUPcluster_config_1.crf
│ │ ├── BACKUPcluster_config_1.drf
│ │ └── DRLK_IFcluster_config.lk
│ ├── GemFire_user
│ │ └── services
│ ├── locator10334view.dat
│ ├── locator10334views.log
│ ├── logs
│ │ └── app.log
│ └── vf.gf.locator.pid
├── log4j-custom.xml
└── server1
├── logs
│ └── app.log
└── vf.gf.server.pid
我试过最新版本,GemFire 9.9.1
,也许你用的是旧版本?你能试试最新版本吗?
Geode 开箱即用的日志记录行为不包括每行记录器的 "name"(通常是 class 调用 Log4j Logger
的名称) .我想将此字段添加到默认记录器配置,即记录到 <member-name>/<member-name>.log
.
使用 instructions from the documentation,我能够使用下面的配置成功配置一个 附加 记录器——它写入一个与默认文件不同的文件(logs/app.log
在这种情况下),但默认配置 也 仍然正常记录到默认文件。
我的期望是提供我自己的 log4j2.xml
会 覆盖 默认配置,而不是补充它。我能做些什么来覆盖默认记录器的行为吗?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="FATAL" shutdownHook="disable" packages="org.apache.geode.internal.logging.log4j">
<Properties>
<Property name="geode-pattern">[%level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} <%thread> tid=%tid] - %c - %message%n%throwable%n</Property>
<Property name="geode-default">true</Property>
</Properties>
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout pattern="${geode-pattern}"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
我没有看到你的配置有什么问题,实际上我只是在本地试了一下,成员只登录到配置文件而不是默认文件:
$> gfsh start locator --name=locator1 --J=-Dlog4j.configurationFile=$CURRENT_DIRECTORY/log4j-custom.xml
$> gfsh -e "connect" -e "start server --name=server1 --J=-Dlog4j.configurationFile=$CURRENT_DIRECTORY/log4j-custom.xml"
$> gfsh -e "connect" -e "shutdown --include-locators=true"
$> tree -L 3
.
├── gfsh-0_0.log
├── locator1
│ ├── ConfigDiskDir_locator1
│ │ ├── BACKUPcluster_config.if
│ │ ├── BACKUPcluster_config_1.crf
│ │ ├── BACKUPcluster_config_1.drf
│ │ └── DRLK_IFcluster_config.lk
│ ├── GemFire_user
│ │ └── services
│ ├── locator10334view.dat
│ ├── locator10334views.log
│ ├── logs
│ │ └── app.log
│ └── vf.gf.locator.pid
├── log4j-custom.xml
└── server1
├── logs
│ └── app.log
└── vf.gf.server.pid
我试过最新版本,GemFire 9.9.1
,也许你用的是旧版本?你能试试最新版本吗?