|| Device | SoftWLC | || DocMainTitle | Руководство администратора | || DocTitle3 | Eltex PCRF | || fwversion | 1.8 | || issueDate | 26.10.2017 | |
Модуль выполняет функции:
Доступ к технической консоли можно получить по ссылке 'http://<ip address pcrf>:7070/pcrf'. |
apt-get install eltex-pcrf |
Действие | Команда | Ответ | |||||
---|---|---|---|---|---|---|---|
Проверка состояния |
|
| |||||
Запуск сервиса |
|
| |||||
Остановка сервиса |
|
| |||||
Перезапуск сервиса |
|
|
Содержит базовые параметры для запуска приложения. Пример дефолтной конфигурации:
# Eltex.PCRF Server daemon parameters NAME="eltex-pcrf" # Location of java binary JAVA=/usr/bin/java # Initial size of Java heap JAVA_INIT_HEAP=256m # Maximum size of Java heap JAVA_MAX_HEAP=512m # Options for Java Garbage Collector GC_OPTS="-XX:+UseG1GC \ -XX:+PrintGCDateStamps \ -XX:+PrintGCDetails \ -XX:+UseGCLogFileRotation \ -XX:NumberOfGCLogFiles=7 \ -XX:GCLogFileSize=5M \ -XX:+UseStringDeduplication \ -XX:+PrintGCTimeStamps \ -XX:+PrintTenuringDistribution \ -Xloggc:/var/log/eltex-pcrf/gc.log" # To monitor via JMX - jconsole to host:port #JMX_OPTS="-Dcom.sun.management.jmxremote \ #-Dcom.sun.management.jmxremote.port=8085 \ #-Dcom.sun.management.jmxremote.authenticate=false \ #-Dcom.sun.management.jmxremote.ssl=false \ #-Djava.rmi.server.hostname=127.0.0.1" HEAP_DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-pcrf" VERTX_CACHE_DIR_OPT="-Dvertx.cacheDirBase=/var/lib/$NAME" JVM_OPTS="$JMX_OPTS $GC_OPTS $HEAP_DUMP_OPTS -Xms$JAVA_INIT_HEAP -Xmx$JAVA_MAX_HEAP $VERTX_CACHE_DIR_OPT" JAR="/usr/lib/$NAME/$NAME.jar" # Send notification #NOTIFICATION_ADDR="admin@mail.loc |
Параметры | Описание |
---|---|
JAVA=/usr/bin/java | Расположение Java-машины. |
JAVA_INIT_HEAP | Количество памяти, выделяемое на работу сервиса при старте. Рекомендуется выставлять равное JAVA_MAX_HEAP. |
JAVA_MAX_HEAP | Максимальное количество памяти, которое может зарезервировать сервис. |
GC_OPTS="-XX:+UseG1GC \ . . . | Параметры сборщика мусора. |
# To monitor via JMX - jconsole to host:port . . . | Параметры для работы с JMX. |
HEAP_DUMP_OPTS | Параметры записи дапма памяти. |
VERTX_CACHE_DIR_OPT | Расположение кэша. |
JVM_OPTS | Дополнительные опции для запуска jvm. |
NOTIFICATION_ADDR | Адрес для отправки уведомлений. |
Содержит настройки взаимодействия с другими сервисами.
{ "auth.address" : "0.0.0.0", "auth.port" : 31812, "auth.mac.open.timeout.s" : 3600, "auth.mac.welcome.service" : "WELCOME", "acct.address" : "0.0.0.0", "acct.ports" : [1813, 31813], "lease.saver.address" : "0.0.0.0", "lease.saver.port" : 4381, "aaa.instances" : 5, "aaa.host" : "127.0.0.1", "aaa.secret" : "testing123", "aaa.auth.port" : 1812, "aaa.acct.port" : 1813, "aaa.rest.port" : 7080, "aaa.timeout" : 10, "aaa.attempts" : 1, "web.monitoring.port" : 7070, "cluster.enable" : false, "cluster.eventBusPort" : 5801, "radius" : { "url": "jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "mongo.pcrf" : { "connection_string": "mongodb://localhost:27017/pcrf?waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0", "db_name": "pcrf" }, "mongo.ott" : { "connection_string": "mongodb://localhost:27017/ott?waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0", "db_name": "ott" }, "session.storage" : { "session.check.period.s" : 300, "unauth.store.time.s" : 600, "interval.number.expired" : 3, "min.interval.s" : 45, "default.interval.s" : 600 }, "bras.coa" : { "coa.timeout" : 10, "coa.attempts" : 1, "coa.secret" : "testing123", "remote.coa.port" : 3799, "executor.size" : 100, "log.clean.period.s" : 600, "log.store.period" : { "period" : 14, "unit" : "D" } }, "sql.ems" : { "url": "jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "sql.wireless" : { "url": "jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 }, "sql.auth.service" : { "url": "jdbc:mysql://localhost/eltex_auth_service?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 4 }, "language" : "en", "radius.nbi" : { "wdsl.url" : "http://localhost:8080/axis2/services/RadiusNbiService?wsdl", "username" : "softwlc_service", "password" : "softwlc", "connection.timeout.ms" : 30000, "request.timeout.ms" : 120000 }, "tariffs.update.interval" : { "interval" : 1, "unit" : "hours" }, "bras.cron.update.interval": { "interval" : 1, "unit": "hours" }, "filters.cache.dir" : "/var/lib/eltex-pcrf/filters/", "clickhouse": { "url": "jdbc:clickhouse://localhost:8123/radius", "user_name": "javauser", "user_password": "javapassword", "actualization_period_ms": 15000 }, "accounting.options": { "use_clickhouse": false, "use_mysql": true, "batch_interval_ms": 300000, "max_queue_load": 100 }, "generic.ap.registrar": { "max_aps_in_queue": 30, "ap_register_interval_ms": 600000, "added_ap_cache_ttl_ms": 600000, "host": "localhost", "port": 8080, "worker_pool_size": 8 }, "kafka": { "mcd.enabled": false, "circuit.breaker": { "timeout.ms": 30000, "reset.ms": 60000, "max.failures": 3 }, "producer": { "bootstrap.servers": "localhost:9092", "linger.ms": "1000", "topic": "mcd", "max.block.ms": "30000", "request.timeout.ms": "14000", "delivery.timeout.ms": "30000", "acks": "1", "retries": "1" } } } |
Параметры | Описание |
---|---|
Настройки авторизации | |
auth.address | Интерфейс сервера, ожидающий запросы на авторизацию. |
auth.port | Порт сервера, на который принимаются запросы на авторизацию. |
auth.mac.open.timeout.s | Длительность "открытой авторизации", используемая, если не переопределено в настройках портала. |
auth.mac.welcome.service | Сервис доступа, используемый если не переопределен в настройках тарифа. |
Настройки сбора аккаунтинга | |
acct.address | Интерфейс сервера, ожидающий аккаунтинг. |
acct.port | Порт сервера, на который принимаются пакеты аккаунтинга. |
Настройки для проведения авторизации Wi-Fi пользователей через BRAS | |
aaa.host | Адрес сервиса Eltex.RADIUS. |
aaa.secret | RADIUS key. |
aaa.auth.port | Порт, на который отправляются запросы авторизации. |
aaa.acct.port | Порт, на который отправляться пакеты аккаунтинга. |
aaa.rest.port | Порт для обмена служебными командами с Eltex.RADIUS. |
aaa.timeout | Время ожидания ответа. |
aaa.attempts | Количество попыток отправки пакетов. |
Порт мониторинга | |
web.monitoring.port | Порт для работы технологической консоли и мониторинга. |
Включение кластеризации | |
cluster.enable | Запуск кластеризации. |
cluster.eventBusPort | Порт для обмена данными с нодами в кластере. |
Настройки коннектов к БД MySQL ('radius', 'eltex_ems', 'wireless', 'auth.service') | |
url | Строка подключения к базе данных Mysql. |
user | Логин для подключения к БД. |
password | Пароль для подключения к БД. |
max_pool_size | Максимальное количество коннектов, которое можно открыть сервис для подключения. |
Подключение к БД Mongo( 'pcrf', 'ott') | |
connection_string | URI для подключения к Mongo. |
db_name | Название базы, к которой производится подключение. |
Параметры хранения активных сессий в Mongo | |
session.check.period.s | Период проверки актуальности хранимых сессий. Если сессия закрыта во время проверки или время ее хранения истекло, она удаляется из базы. |
unauth.store.time.s | Период хранения сессий пользователей, созданных на BRAS, авторизация которых не была выполнена. |
interval.number.expired | Количество пропущенных интервалов аккаунтинга, после которого сессия считается "зависшей" и подлежит закрытию. |
min.interval.s | Минимальное значение интервала аккаунтига, которое используется для расчета зависших сессий. |
default.interval.s | Начальное значение интервала аккаунтига, которое сохраняется в сессию сразу после ее создания. |
Параметры отправки CoA | |
coa.timeout | Время ожидания ответа на команду. |
coa.attempts | Количество повторных отправок. |
coa.secret | Секретный ключ. |
remote.coa.port | Порт, на который будут отправляться команды. |
log.clean.period | Время хранения результатов. |
log.store.period period unit | Время хранения логов выполнения команд. Количественный период. Единицы измерения (по дефолту - дни "D"). |
worker.pool.size | Размер пула потоков выделенного для вертикали CoA |
Настройка языка для отображения ошибок | |
language | Язык, используемый пи логировании, дефолтное значение "en". Можно использовать "ru", однако логи переведены не все. |
Настройка подключения к сервису NBI | |
wdsl.url | Адрес для обращения на сервис NBI. |
username | Логин от учетной записи. |
password | Пароль от учетной записи. |
connection.timeout.ms | Время ожидания при подключении к сервису. |
request.timeout.ms | Время ожидания ответа при выполнении запроса на сервис. |
Интервал обновления тарифных планов | |
interval | Интервал обновления тарифных планов. |
unit | Единицы измерения интервала (по дефолту измеряется в часах "hours"). |
Путь к директории с временными файлами списков URL | |
filters.cache.dir | Расположение директории. |
Настройки коннектов к БД Yandex ClickHouse | |
url | Строка подключения к базе данных Yandex ClickHouse. |
user_name | Логин от учетной записи. |
user_password | Пароль от учетной записи. |
actualization_period_ms | Период проверки доступности БД. |
Параметры сохранения аккаунтинга | |
use_clickhouse | Сохранять аккаунтинг в базу данных Yandex ClickHouse. |
use_mysql | Сохранять аккаунтинг в базу данных MySQL. |
batch_interval_ms | Интервал сохранения аккаунтинга в базу данных. |
max_queue_load | Размер очереди при достижение которого запускается сохранение аккаунтинга в базу данных. |
Параметры выгрузки generic AP, полученных из аккаунтинга по option 82 | |
max_aps_in_queue | Максимальное число generic AP в очереди на добавление, по достижении которого начнется их выгрузка в EMS. |
ap_register_interval_ms | Интервал времени (мс), по достижении которого начнется выгрузка generic AP в EMS, находящихся в очереди. |
added_ap_cache_ttl_ms | Интервал времени (мс), в течение которого для выгруженных или обновленных generic AP не будет выполняться попытка выгрузить их в EMS. |
host | IP-адрес, на котором находиться EMS-NBI. |
port | Порт, на котором находится EMS-NBI. |
worker_pool_size | Количество выделенных потоков, задействованных для добавления GenericAP. |
Параметры подключения к брокеру сообщений Apache Kafka | |
mcd.enabled | Включение отправки сообщений в брокер сообщений. |
Параметры circuit.breaker | |
timeout.ms | Время, после которого попытка отправки сообщения считается неудачной |
max.failures | Количество неудачных попыток для перехода в состояние игнорирования отправки сообщений. В случае, когда количество неудачных отправок сообщений достигает значения max.failures, следующие попытки отправки будут игнорироваться в течение периода reset.ms. |
reset.ms | Время, в течение которого будут игнорироваться следующие попытки отправки сообщений. По истечении этого времени будет предпринята еще одна попытка отправки сообщения. |
Параметры producer | |
bootstrap.servers | Адресе сервера брокера сообщений. |
Верхняя граница задержки для пакетной обработки сообщений. | |
topic | Имя топика. |
max.block.ms | Время блокировки на отправку сообщений. |
request.timeout.ms | Максимальное время ожидания клиентом ответа на запрос. |
delivery.timeout.ms | Время ожидания ответа после отправки сообщения. |
acks | Количество подтверждений чтобы считать запрос завершонным. |
retries | Количество попыток отправки в течение delivery.timeout.ms. |
Конфигурация кластера Hazelcast, используемого для объединения отдельных нод PCRF.
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config http://www.hazelcast.com/schema/config/hazelcast-config-3.6.xsd" xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- You can separate your clusters in a simple way by specifying group names. --> <group> <name>dev</name> </group> <network> <!-- Write here public address of the node --> <public-address>192.168.0.1</public-address> <port auto-increment="false" port-count="100">5701</port> <outbound-ports> <ports>0</ports> </outbound-ports> <join> <multicast enabled="false"/> <tcp-ip enabled="true"> <!-- Write here IP of all members of the cluster (including this) --> <member>192.168.0.1</member> <member>192.168.0.2</member> </tcp-ip> <discovery-strategies> </discovery-strategies> </join> <interfaces enabled="true"> <!-- Write here IP of the interface to use for cluster --> <interface>192.168.0.1</interface> </interfaces> <ssl enabled="false"/> <socket-interceptor enabled="false"/> <symmetric-encryption enabled="false"> <algorithm>PBEWithMD5AndDES</algorithm> <!-- salt value to use when generating the secret key --> <salt>thesalt</salt> <!-- pass phrase to use when generating the secret key --> <password>thepass</password> <!-- iteration count to use when generating the secret key --> <iteration-count>19</iteration-count> </symmetric-encryption> </network> </hazelcast> |
Параметры | Описание |
---|---|
<name>dev</name> | Имя ноды. Должно быть одинаковым на всех устройствах. Если узлы с разными именами, то в кластер не объединяются. |
<public-address>192.168.0.1</public-address> | Собственный адрес ноды в кластере. |
<member>192.168.0.1</member> <member>192.168.0.2</member> | Список нод, состоящих в кластере. Необходимо указывать как собственный адрес, так и всех нод состоящих в кластере. |
<interface>192.168.0.1</interface> | Адрес интерфейса ноды в кластере (как правило равен public-address). |
Файл настроек логирования.
<?xml version="1.0" encoding="UTF-8"?> <Configuration packages="biz.paluch.logging.gelf.log4j2"> <Properties> <Property name="maxSize" value="5MB"/> <Property name="maxCount" value="7"/> <Property name="logDir" value="/var/log/eltex-pcrf"/> <Property name="defaultPattern" value="%d{ISO8601} [%t] %-5p %logger{1} %C{1}.%M(line:%L). %m%n"/> <Property name="gelfHost" value="udp:lab3-test.eltex.loc"/> <Property name="gelfPort" value="12201"/> <Property name="gelfLevel" value="OFF"/> <Property name="filenamePrefix" value="eltex-pcrf-"/> </Properties> <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout> <Pattern>${defaultPattern}</Pattern> </PatternLayout> </Console> <RollingFile name="SERVICE" fileName="${logDir}/${filenamePrefix}service.log" filePattern="${logDir}/service/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="DEFAULT" fileName="${logDir}/${filenamePrefix}default.log" filePattern="${logDir}/default/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="RADIUS" fileName="${logDir}/${filenamePrefix}radius.log" filePattern="${logDir}/radius/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="GENERIC_AP" fileName="${logDir}/${filenamePrefix}generic-ap.log" filePattern="${logDir}/generic-ap/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="LEASE_SAVER" fileName="${logDir}/${filenamePrefix}lease_saver.log" filePattern="${logDir}/lease_saver/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="SHAPER" fileName="${logDir}/${filenamePrefix}shaper.log" filePattern="${logDir}/shaper/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="I18N" fileName="${logDir}/${filenamePrefix}i18n.log" filePattern="${logDir}/i18n/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="HAZELCAST" fileName="${logDir}/${filenamePrefix}hazelcast.log" filePattern="${logDir}/hazelcast/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <!-- На случай отслеживания утечек включить логгер и leakDetectionThreshold в обоих конфигах hikari--> <!-- <RollingFile name="HIKARI" fileName="${logDir}/${filenamePrefix}hikariCP.log"--> <!-- filePattern="${logDir}/hazelcast/%d{yyyyMMdd}.%i.log">--> <!-- <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>--> <!-- <PatternLayout>--> <!-- <pattern>${defaultPattern}</pattern>--> <!-- </PatternLayout>--> <!-- <Policies>--> <!-- <SizeBasedTriggeringPolicy size="${maxSize}"/>--> <!-- </Policies>--> <!-- <DefaultRolloverStrategy max="${maxCount}"/>--> <!-- </RollingFile>--> <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="eltex-pcrf" extractStackTrace="true" originHost="%host{fqdn}" maximumMessageSize="8192"> <Field name="thread" pattern="%t"/> <Field name="level" pattern="%level"/> <Field name="severity" pattern="%-5level"/> <Field name="logger" pattern="%logger{1}"/> <Field name="location" pattern="%C{1}.%M(line:%L)"/> </Gelf> </Appenders> <Loggers> <!-- Hikari logger на случай отслеживания утечек--> <!-- <Logger name="com.zaxxer.hikari" level="WARN" additivity="false">--> <!-- <appender-ref ref="HIKARI"/>--> <!-- </Logger>--> <Logger name="org.eltex.softwlc.pcrf"> <AppenderRef ref="SERVICE"/> </Logger> <Logger name="org.eltex.softwlc.pcrf"> <AppenderRef ref="SERVICE"/> </Logger> <Logger name="io.vertx"> <AppenderRef ref="SERVICE"/> </Logger> <Logger name="com.hazelcast" additivity="false"> <AppenderRef ref="HAZELCAST"/> </Logger> <!-- Turn off debug messages about cluster from MongoDB driver --> <Logger name="org.mongodb.driver.cluster" level="INFO"/> <!-- This Logger writes only to radius.log --> <Logger name="org.eltex.softwlc.pcrf.vertx.radius" additivity="false"> <AppenderRef ref="RADIUS"/> </Logger> <!-- This Logger also writes to radius.log --> <Logger name="net.jradius"> <AppenderRef ref="RADIUS"/> </Logger> <!-- GenericAP Registrar logging --> <Logger name="org.eltex.softwlc.pcrf.vertx.radius.verticle.option82" additivity="false"> <AppenderRef ref="GENERIC_AP"/> </Logger> <!-- This Logger writes only to lease_saver.log --> <Logger name="org.eltex.softwlc.pcrf.vertx.dhcp" additivity="false"> <AppenderRef ref="LEASE_SAVER"/> </Logger> <!-- This Logger writes only to shaper.log --> <Logger name="org.eltex.softwlc.pcrf.vertx.shaper" additivity="false"> <AppenderRef ref="SHAPER"/> </Logger> <Logger name="org.eltex.softwlc.pcrf.language" additivity="false"> <AppenderRef ref="I18N"/> </Logger> <Root level="DEBUG"> <AppenderRef ref="Gelf" level="${gelfLevel}"/> </Root> </Loggers> </Configuration> |
<Property name="maxSize" value="5MB"/> |
<Property name="maxCount" value="7"/> |
<Property name="logDir" value="/var/log/eltex-pcrf"/> |
<Property name="gelfHost" value="udp:lab3-test.eltex.loc"/> <Property name="gelfPort" value="12201"/> <Property name="gelfLevel" value="OFF"/ |
<Root level="DEBUG"> |