2012-04-26 4 views
1

В моем проекте Struts я использую Loggers. Я запускаю сервер WSAD в режиме отладки. Здесь условие ниже удовлетворительное, но оно не печатает информацию о журнале в консоли.Информация о журнале не печатается на консоли

if(count.intValue() > 1) 
{ 
    if (log.isDebugEnabled()) 
     log.info("many"); 

    return mapping.findForward("many"); 
} 

Здесь я установил уровень Logger на INFO.

+0

Сбивает с толку читателя, используя предназначенные для этого отступающие отступы? –

+0

, как это противоречит интуиции. В Second, если условие также насыщено. Но log.info не печатает на консоли. – Mdhar9e

+2

Возможно, потому, что уровень ведения журнала установлен на 'INFO', так что' isDebugEnabled' возвращает 'false'? – Jesper

ответ

3

А «нижний» уровень ведения журнала включает в себя все «высокие» уровни:

ERROR > WARN > INFO > DEBUG 
highest ------------ lowest 

Это означает, например, что, когда вы установите уровень отлаживать, вы также получите INFO, WARN и сообщения об ошибках; если вы установите его в INFO, вы увидите, ERROR, WARN и INFO, но не сообщения DEBUG и т.д.

Посмотрите на эти строки:

if (log.isDebugEnabled()) 
    log.info("many"); 

Смущает здесь является то, что вы проверить, если DEBUG (с isDebugEnabled), но вы фактически регистрируетесь на уровне INFO.

Итак, что здесь происходит, если уровень установлен в:

  • DEBUG: Вы увидите сообщение, потому что DEBUG включает в себя сообщения INFO.
  • INFO: вы будете не см. Сообщение, потому что isDebugEnabled возвращает false, когда уровень установлен на что-либо выше DEBUG. Это означает, что оператор внутри if не выполнен, и сообщение не отображается.
0

Как сказал Йеспер, isDebugEnabled вернется только в том случае, если уровень журнала установлен как минимум на DEBUG, поэтому удалите эту проверку или установите уровень журнала на DEBUG. Уровень DEBUG включает INFO, но INFO не включает DEBUG.

Смежные вопросы