Как добраться, JBoss регистрируют каталог

Мы должны отобразить файлы журнала JBoss из нашего веб-приложения. Действительно ли возможно достигнуть этого, не используя ServerConfigLocator? Приложение должно быть в состоянии работать также с Websphere, и мы не хотим зависимостей от определенных БАНОК.

9
задан Lluis Martinez 8 February 2010 в 09:08
поделиться

2 ответа

Помимо повышения производительности (что, вероятно, является предварительной оптимизацией в большинстве случаев *), она также защищает от (очень странного) сценария, когда конфигурация PHP среды не имеет текущего каталога (. ) как часть пути включения.

* Benchmark of включает , используя путь, который требует просмотра include _ path , в сравнении с относительным путем, который делает это. Протестировано более 100000 итераций каждый

Результаты

include("include.php"):   8.3664200305939s
include("./include.php"): 8.3511519432068s

(8.3664200305939 - 8.3511519432068) / 100000 = 0.000000152680874s

Если вы не включаете сотни или тысячи файлов, 0,0000001s в лучшем случае ничтожно мало.

Тестовый код

define("MAX", 100000);

ob_start();
$i = MAX;
$_t = microtime(true);
do {
    include("include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();

echo "include(\"include.php\"):  {$_t}s\n";

ob_start();
$i = MAX;
$_t = microtime(true);
do {
    include("./include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();

Тест проводился на 2.16GHz Macbook 10.5.8 с PHP версии 5.2.9 (www.entropy.ch версия 7)

-121--2299062-

Я не тестировал это на коде 500, но это работает на других, таких как 200, 302 и 404.

response=$(curl --write-out %{http_code} --silent --output /dev/null servername)

В соответствии с предложением @ ibai добавьте -head , чтобы сделать запрос только HEAD. Это сэкономит время при успешном извлечении, так как содержимое страницы не будет передано.

-121--647609-

Определенный каталог журнала JBoss содержится в системном свойстве jboss.server.log.dir . Этот каталог можно преобразовать в java.io.File и прочитать файлы внутри.

File logDir = new File(System.getProperty("jboss.server.log.dir"));
logDir.list(); // etc etc

Это также можно получить через ServerConfig.getServerLogDir () (на JBoss 4.x, в любом случае), но вы сказали, что хотите избежать зависимостей JAR.

13
ответ дан 4 December 2019 в 14:28
поделиться

Вы можете использовать собственную реализацию журнала. Это даст вам полный контроль над поведением журнала.

JBoss использует Log4j в качестве механизма ведения журнала. WebSphere использует ведение журнала Jakarta Commons, которое можно настроить для делегирования Log4j, если оно еще не используется по умолчанию. Если вы уже используете Log4j в своем приложении, я не ожидаю, что эта разница вызовет у вас какие-либо новые проблемы.

1
ответ дан 4 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: