Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    System.out e Apache Tomcat 8

    Buongiorno.
    Posto in essere che produrre un out put di log con System.out.printlin non è proprio il massimo, mi vedo nella necessità di usare questo sistema.
    Sulla versione 7 di Tomcat il log finisce nel file catalina.out.
    Nella versione 8.0.35 dovrebbe finire in un file catalina.[data].log
    Ma non succede nulla.

    Ho provato a modificare il file loggin.proprieties
    In questo modo senza esisto :


    handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler


    .handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler


    ################################################## ##########
    # Handler specific properties.
    # Describes specific configuration info for Handlers.
    ################################################## ##########


    1catalina.org.apache.juli.AsyncFileHandler.level = FINE
    1catalina.org.apache.juli.AsyncFileHandler.directo ry = ${catalina.base}/logs
    1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.


    2localhost.org.apache.juli.AsyncFileHandler.level = FINE
    2localhost.org.apache.juli.AsyncFileHandler.direct ory = ${catalina.base}/logs
    2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.


    3manager.org.apache.juli.AsyncFileHandler.level = FINE
    3manager.org.apache.juli.AsyncFileHandler.director y = ${catalina.base}/logs
    3manager.org.apache.juli.AsyncFileHandler.prefix = manager.


    4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
    4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
    4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.


    java.util.logging.ConsoleHandler.level = FINE
    java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter




    ################################################## ##########
    # Facility specific properties.
    # Provides extra control for each logger.
    ################################################## ##########


    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler


    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler


    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler


    # For example, set the org.apache.catalina.util.LifecycleBase logger to log
    # each component that extends LifecycleBase changing state:
    #org.apache.catalina.util.LifecycleBase.level = FINE
    riavviare apache, ma niente.

    Ho provato anche a modificare il file context.xml sia nella directory /conf sia in quello della webapp/[nome]/META-INF, aggiungendo il parametro swallowOutput="true"

    <Context swallowOutput="true" >

    <!-- Default set of monitored resources. If one of these changes, the -->
    <!-- web application will be reloaded. -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>


    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->


    <!-- Uncomment this to enable Comet connection tacking (provides events
    on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnect ionManagerValve" />
    -->
    </Context>

    Il tutto senza nessun esito.
    Qualcuno mi aiuta a capire dove sta il problema ?
    Flectere si nequeo superos acheronta movebo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Da quello che leggo nella documentazione di Tomcat 8 (che non ho e, purtroppo, al momento non ho una VM a disposizione dove testarlo), è necessario attivare il flag swallowOutput (come hai giustamente fatto tu) per far sì che i System.out e System.err vengano intercettati... ma dice anche:

    Note, that the swallowOutput feature is actually a trick, and it has its limitations. It works only with direct calls to System.out/err, and only during request processing cycle. It may not work in other threads that might be created by the application. It cannot be used to intercept logging frameworks that themselves write to the system streams, as those start early and may obtain a direct reference to the streams before the redirection takes place.

    I tuoi System.out sono inseriti nel processo di request o sono posti all'interno di un tuo thread?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Allora, io ho provato a metterlo sia nel context del war sia nel context presente in /conf della directory di Tomcat.
    Però la cosa no ha sortito alcun risultato.
    Il problema è che una macchina praticamente identica senza quel context logga il system out e entrambe le macchina hanno il System.out. sul thread principale.

    Ieri ho anche provato a usare Log4j convertento la mia personale classe di log da System.out a Log4j.
    In locale va a una meraviglia...
    In locale...


    #LOGGERlog4j.rootCategory=DEBUG, APPENDER_OUT, APPENDER_FILE


    #APPENDER_OUT
    log4j.appender.APPENDER_OUT=org.apache.log4j.Conso leAppender
    log4j.appender.APPENDER_OUT.layout=org.apache.log4 j.PatternLayout
    log4j.appender.APPENDER_OUT.layout.ConversionPatte rn=%5p [%t] (%F:%L) – %m%n


    #APPENDER_FILE
    log4j.appender.APPENDER_FILE=org.apache.log4j.Roll ingFileAppender
    log4j.appender.APPENDER_FILE.File=/home/carnauser/Log/mioLog.log
    log4j.appender.APPENDER_FILE.MaxFileSize=100KB
    log4j.appender.APPENDER_FILE.MaxBackupIndex=1
    log4j.appender.APPENDER_FILE.layout=org.apache.log 4j.PatternLayout
    log4j.appender.APPENDER_FILE.layout.ConversionPatt ern=%p %t %c – %m%n
    Questo logga sia in console sia su file.
    Lo stesso war ( con la directory cambiata nel file qua sopra ) sul server non fa nulla.

    Ho provato sia mettendo il famoso file di proprietà in lib, sostituendo i due file di log juli e mettendo le libreie log4j1.2.x ( sia con il nome intero sia come dice la guida di apache come log4j.jar )
    Ho cancellato anche il loggin.proprieties come suggerito.
    Non fa nulla.

    Ho rimosso quanto sopra perchè mi sono detto..tanto il jar è già incluso nel war e così il file di configurazione.
    Niente.

    Ho provato anche a dare permessi totali ( scrittura etc ) alla cartelle del file ma niente.

    Sono abbastanza disperato.
    Ma non potevano fare come Tomcat 7 dove funzionava tutto?
    Flectere si nequeo superos acheronta movebo

  4. #4
    Dopo aver reinstallato tutto da capo con un installazione vergine di tomcat e utilzzando log4j
    Con la configurazione del post qua sopra scrive in /var/log/upstart/tomcat.log

    Ma solo lì e non nel file in /home/carnauser/Log/mioLog.log come sopra.
    Flectere si nequeo superos acheronta movebo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.