Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Использование org.apache.commons.logging


Автор: zone51 23.1.2007, 16:16
Уважаемые форумчане! Думаю многим будут интересно изучить пакет org.apache.commons.logging для удобного и быстрого управления логами.
Жавадок находится http://jakarta.apache.org/commons/logging/commons-logging-1.1/apidocs/index.html. Я столкнулся с такой проблемой:
после выполнения этого кода:
Код

FileSystemManager man=VFS.getManager();
FileObject src=man.resolveFile(initial_src_path);
FileObject dest=man.resolveFile(initial_dest_path);
dest.copyFrom(src,Selectors.SELECT_ALL);

Который использует org.apache.commons.logging для своей работы у меня в последующем коде никак не выводятся сообщения по System.out.println(). Это навело меня на мысль что после использования вышеприведенного кода а следовательно и org.apache.commons.logging все выводы в консоль переводятся на какой то поток из org.apache.commons.logging. Мне очень бы хотелось систематизировать знания о org.apache.commons.logging и буду рад если мне в этом кто то поможет. Интересно будут думаю многим.
Вопрос такой: чем и как заменить  System.out.println() для дебага проги, а то щас вообще все по приборам smile и как вообще проинициализить работу пакета логгинг чтобы можно было его вызывать потом в любом месте программы одной процедурой. Спасибо.

зы. Доку читаю. Честно  smile 

Автор: Jubei 23.1.2007, 17:39
Наверно немного не в тему, но...  имхо, если нужно быстрое и удобное логирование то лучше использовать http://logging.apache.org/log4j/docs/ 
Неплохая статья - почему http://www.qos.ch/logging/thinkAgain.jsp


Автор: zone51 23.1.2007, 17:51
Я тут подумал-все таки лучше commons logging так как проект будет расширяцца и просто нужно будет остановиться на чем то одном. Я вот пишу
Код

Log lg=LogFactory.getInstance();
lg.info("info");

Пишет ошибку типа нельзя от статического, надо создавать. 
А конструктор приватный.
Как правильно? Спасибо.

Автор: LSD 23.1.2007, 18:18
Код
Log log = LogFactory.getFactory().getInstance(StaticDataLoader.class);

Автор: zone51 23.1.2007, 18:22
LSD
Спасибо но у меня пошло и так
Код

Log log=LogFactory.getLog("org.apache.commons.logging.Log");

Кстати а как перенаправить вывод логов в файл?
Спасибо.

Автор: LSD 23.1.2007, 18:26
Цитата(zone51 @  23.1.2007,  18:22 Найти цитируемый пост)
Кстати а как перенаправить вывод логов в файл?

Зависит от того какая система логгирования используется. Если Log4j, то так:
Код
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>

  <appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>

    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%-5p [%t] - %m at %l%n"/>
    </layout>

    <filter class="org.apache.log4j.varia.LevelRangeFilter">
      <param name="LevelMin" value="all"/>
      <param name="LevelMax" value="info"/>
      <param name="AcceptOnMatch" value="true" />
    </filter>
  </appender>


  <appender name="error-console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.err"/>

    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%-5p [%t] - %m%n"/>
    </layout>

    <filter class="org.apache.log4j.varia.LevelRangeFilter">
      <param name="LevelMin" value="warn"/>
      <param name="LevelMax" value="off"/>
      <param name="AcceptOnMatch" value="true" />
    </filter>
  </appender>


  <appender name="log-file-writer" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="application.log"/>
    <param name="Append" value="true"/>

    <param name="DatePattern" value="'.for.'yyyy-MM-dd'.log'"/>

    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ISO8601} [%-5p] [%t]%n  %m at %l%n%n%n"/>
    </layout>
  </appender>

  <root>
    <priority value="debug"/>
    <appender-ref ref="console"/>
    <appender-ref ref="error-console"/>
    <appender-ref ref="log-file-writer"/>
  </root>

</log4j:configuration>

Автор: zone51 23.1.2007, 18:41
LSD
Спасибо, скрипт пригодится, только мне в commons-logging, я уже все под него затачиваю.Спасибо. smile  smile 

Автор: LSD 23.1.2007, 18:44
Ты не понял, commons logging сам ничего не логирует. Он просто является оберткой для других систем логирования. На данным момент он может работать с JDK 1.4 logging API и Log4J.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)