Можно также аннулировать высоту строки родителя:
#wrapper {
line-height: 0;
}
Все исправления: http://jsfiddle.net/FaPFv/
Я помещаю свою конфигурацию в пакет по умолчанию: src/
и журнал в файлы с помощью $ {catalina.home} системное свойство:
log4j.appender.???.file=${catalina.home}/logs/system.log
Я рекомендовал бы Вам использовать SLF4J. Это - простой фасад входа, который поддерживает большинство популярных систем регистрации ( Log4j, вход свободного городского населения , API Входа Java и Logback). Используя его, Вы будете способный заменить Вашу систему регистрации подчеркивания любому другому простым обновлением ПУТИ К КЛАССУ.
другое преимущество SLF4J параметризованные вызовы , который уменьшает ужасный код входа.
На самом деле, они рекомендуют использовать SLF4J с Logback. Logback является преемником [1 110] Log4J. И это было разработано тем же автором.
Где конфигурационный файл входит в .war файл пакета? Корень пути к классу.
Где люди регистрируются к, плоский файл относительного или полного пути или база данных? Зависит от потребности. Всегда лучше использовать относительные пути. Базы данных хороши, если Вы реализовываете другое приложение, которое выберет журналы от него и отправит их использующий электронную почту/SMS
Вход Log4J идет непосредственно в файл журнала сервера приложений автоматически или - что что-то необходимо настроить? В этом случае я использую Tomcat, но я часто использую Jrun. При использовании Консоли appender да, это будет, вошел в систему файл журнала контейнера сервлета.
Какие-либо другие глюки я должен знать для входа веб-приложения? Если Вы регистрируетесь от другого logback использования потоков, это ориентировано на многопотоковое исполнение, и это выставляет параметризованные сообщения журнала.
Вход к DB добавляет другое место ошибки. У нас была ситуация, где серверы напоминания зарегистрировались к DB, и кто-то выполнил дорогой запрос на том DB, который замедлил его так, что серверы напоминания стали очень, очень медленными. Вход в файл может вызвать проблемы, если у Вас заканчивается пространство, но это кажется менее вероятным для замедления целого приложения.
Это могла бы быть хорошая идея поместить файл конфигурации куда-нибудь, где администратор может изменить его, не восстанавливая Ваше веб-приложение (например, таким образом, они могут включить подробный вход, не будя Вас в середине ночи).
, К сожалению, нет никакого "официального" пути к определению местоположения воплощенных ресурсов из веб-приложения (исправьте меня, если я неправ). Наиболее распространенный способ выполнения его, который я видел, состоит в том, чтобы просмотреть каталоги в пути к классу.
Лично я поместил log4j.properties в каталог WEB-INF и использую init сервлет со следующим кодом:
public class InitServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
private static final String LOG4J_FILE = "WEB-INF/log4j.properties";
public InitServlet() {
super();
}
@Override
public void init() throws ServletException {
super.init();
PropertyConfigurator.configure(getServletContext().getRealPath(LOG4J_FILE));
LogFactory.getLog(InitServlet.class).info("LOG 4J configured");
}
}
Я рекомендую API журнала вызовов (log4j) через slf4j. Даже при использовании log4j веб-контейнера или зависящий, модули могут использовать другой API журнала, такой как Java.util.logging или Джакартский вход свободного городского населения. Slf4j обеспечивает модули моста, которые перенаправляют их к slf4j API. В результате все сообщения журнала записаны log4j в этом случае.
В корне пути к классу, но... Не помещайте конфигурационный файл в военный пакет. Вы не хотите повторно упаковывать и повторно развертывать приложение при изменении регистрирующейся конфигурации, не так ли? Лучшая практика должна была бы поместить конфигурационный файл где-нибудь в путь к классу вне войны.
я обычно регистрируюсь к файловой системе на отдельный раздел (файлы журнала могут стать очень быстрыми и никогда не должны блокировать приложение или операционную систему, если они становятся слишком большими). Я использую большую часть времени полный путь на основе следующей модели: /var/projects/<PROJECT_NAME>/<PRODUCT>/<CLUSTER_NAME>/logs/<INSTANCE_NAME>.log, где < PROJECT_NAME> название проекта, < PRODUCT> может быть Apache, Tomcat, Weblogic..., < CLUSTER_NAME> название кластера и < INSTANCE_NAME> название экземпляра в кластере. Вход к файловой системе быстрее, чем в базе данных. Недостаток состоит в том, что журналы не централизованы при использовании нескольких экземпляров и реальных машин. Но слияние может легко быть сделано со сценарием.
журналы Сервера приложений являются журналами сервера приложений, не журналами приложения. Не пишите в них, но настраивайте инструмент регистратора (например, log4j) и пишите в журналы приложения (поймите выделенный).
при использовании log4j не забывайте использовать isDebugEnabled () прежде для входа:
if(logger.isDebugEnabled()) {
logger.debug("Bla Bla Bla");
}
Обычно, я не помещаю конфигурации входа в приложение, довольно уезжающее это appserver администраторам для конфигурирования входа, всего сервера. В редких случаях я хочу log4j конфигурацию, развернутую с веб-приложением, СЕТЬ-INF является обычным путем.
Снова, зависит от appserver настроек. Один общий файл журнала для appserver и вращающийся ежедневно является обычной установкой. Если существуют какие-либо определенные для приложения потребности, администратор может настроить отдельный файл журнала для приложения (отличенный пакетом / имена классов).
Посмотрите выше. Для кота, используемого в целях разработки, я просто искал бы ее вход (log4j) конфигурация и добавил бы определенный для приложения конкретный там.
if (log.isDebugEnabled()) { log.debug("..."); }
и подобный конструкции в Вашем коде. Обратите внимание, что, если Вам просто нужно немного входа, стандарт сервлета определяет, что можно получить ServletContext и использовать методы журнала там. Это - универсальный сервлет, эквивалентный из System.out.println.