@SuppressWarnings("unchecked")
    private void readAppenderParams(String[] args, String val)
    {
        String name = args[2].trim();
        if (name.isEmpty())
        {
            throw new ConfigException(
                    "Cannot find logger appender's name, which is empty.");
        }
        Appender appender = AppenderManager.getAppender(name);
        if (appender == null)
        {
            throw new ConfigException("Cannot find logger appender by name '"
                    + name + "'.");
        }
        Object baseObj = appender;
        int size = args.length;
        for (int i = 3; i < size - 1; i++)
        {
            String field = args[i].trim();
            if (field.isEmpty())
            {
                throw new ConfigException(
                        "Appender's params setting has a invalid field");
            }
            baseObj = ReflectUtils.getGetMethodObject(baseObj, args[i]);
            if (baseObj == null)
            {
                throw new ConfigException("Appender's params setting field '"
                        + args[i] + "' is null.");
            }
            if (baseObj instanceof Map<?, ?>)
            {
                putMapValue((Map<String, String>) baseObj, i + 1, args, val);
                return;
            }
        }
        name = args[size - 1];
        if (!ReflectUtils.setStringValue(baseObj, name, val))
        {
            throw new ConfigException("Fail to set appender param value for "
                    + baseObj.getClass() + "'s key " + name);
        }
    }