Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.scoja.server.target
Class TemplateFileTarget  view TemplateFileTarget download TemplateFileTarget.java

java.lang.Object
  extended byorg.scoja.server.core.LinkableAtPython
      extended byorg.scoja.server.core.FullLinkAtPython
          extended byorg.scoja.server.core.Link
              extended byorg.scoja.server.target.FileTarget
                  extended byorg.scoja.server.target.TemplateFileTarget
All Implemented Interfaces:
org.scoja.server.core.DecoratedLink, org.scoja.server.core.Linkable

public class TemplateFileTarget
extends FileTarget

Es el destino básico de Scoja; manda a un fichero cuyo nombre puede depender de la fecha del evento y de muchos otros datos como el nombre de la máquina origen, etc. El nombre del fichero se define con un org.scoja.server.template.Template.

Caché de ficheros Para cada evento a procesar, hay que calcular el nombre del fichero en donde hay que escribir. Este cálculo no es muy costoso, pero abrir y cerrar el fichero es extraordinariamente lento. Hicimos unas pruebas preliminares, en las que se mandaba 100000 paquetes tan rápido como es posible, por UDP de una máquina a sí misma. Si el receptor era syslog-ng, llegaban alrededor de un 30%; si el receptor era un Scoja primitivo con destino un FileTarget, llegaban alrededor de un 60%; pero si el destino era un objeto de esta clase abriendo y cerrando los ficheros para cada paquete, llegaban a lo más un 3%.

La manera razonable de resolver esto es mediante una caché de ficheros; que en nuestro caso la implementa FileLRUCache. Obviamente, todos los objetos que escriban en fichero deben compartir esta caché para que no habran de forma separada el mismo fichero y se pisen lo que allí escriban.


Field Summary
protected  org.scoja.server.template.Template template
           
 
Fields inherited from class org.scoja.server.target.FileTarget
fileCache, shouldFlush, writer
 
Fields inherited from class org.scoja.server.core.Link
queue, targets, used
 
Constructor Summary
TemplateFileTarget(FileLRUCache fileCache)
           
 
Method Summary
protected  java.lang.String getFilename(org.scoja.server.core.EventContext env)
           
 void setName(org.scoja.server.template.Template template)
           
 
Methods inherited from class org.scoja.server.target.FileTarget
process, setFlush, setTemplate, write
 
Methods inherited from class org.scoja.server.core.Link
addSimpleSource, addSimpleTarget, addTarget, getLinkable, getTargetSize, propagate, removeTarget, setQueue
 
Methods inherited from class org.scoja.server.core.FullLinkAtPython
__or__
 
Methods inherited from class org.scoja.server.core.LinkableAtPython
__rshift__
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

template

protected org.scoja.server.template.Template template
Constructor Detail

TemplateFileTarget

public TemplateFileTarget(FileLRUCache fileCache)
Method Detail

setName

public void setName(org.scoja.server.template.Template template)

getFilename

protected java.lang.String getFilename(org.scoja.server.core.EventContext env)
Specified by:
getFilename in class FileTarget