Accueil > > > VISUALISER DES JOURNAUX LOG4J
VISUALISER DES JOURNAUX LOG4J
Information sur la source
Description
Cette JInternalFrame permet de visualiser les journaux et permet d'appliquer des filtres de type [erreur][info][debug]. Le code source initial provient du projet SQuireL. Principale modification : la console est réactualisé toutes les secondes. Impératif : dans votre log, il faut que le appender est en paramètre [%t] pour permettre la reconnaissance du type d'erreur. Par exemple pour moi j'ai quelque chose comme : log4j.appender.A1.layout.ConversionPattern=%d{dd .MM.yyyy HH:mm:ss} [%t] %-5p %c %x - %m%n
Source
- /*
- * Copyright (C) 2002-2006 Colin Bell
- * colbell@users.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
- import java.awt.BorderLayout;
- import java.awt.Container;
- import java.awt.Cursor;
- import java.awt.event.*;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.lang.reflect.InvocationTargetException;
- import javax.swing.*;
- import org.apache.log4j.Logger;
-
- /**
- * This sheet shows the SQuirreL log files.
- *
- * @author <A HREF="mailto:colbell@users.sourceforge.net">Colin Bell</A>
- * Ce n'est pas la version original..
- */
- public class ViewLogsSheet extends JInternalFrame {
-
- /** Logger for this class. */
- private static Logger _log = Logger.getLogger(ViewLogsSheet.class);
- /** Combo box containing all the log files. */
- /** Text area containing the log contents. */
- private final JTextArea _logContentsTxt = new JTextArea(20, 50);
- /** Button that refreshes the log contents. */
- private final JButton _refreshBtn = new JButton("Rafraichir");
- private final JCheckBox _errorChkbox = new JCheckBox("Errors");
- private final JCheckBox _debugChkbox = new JCheckBox("Debug");
- private final JCheckBox _infoChkbox = new JCheckBox("Info");
- /** Directory containing the log files. */
- private final File _logDir;
- /** If <TT>true</TT> user is closing this window. */
- private boolean _closing = false;
- /** If <TT>true</TT> log is being refreshed. */
- private boolean _refreshing = false;
- /** Size of current log file */
- private long _fileLenght;
- private static final long serialVersionUID = 1L;
- /**
- *
- *
- * @throws IllegalArgumentException
- * Thrown if a <TT>null</TT> <TT>IApplication passed.
- */
- public ViewLogsSheet() {
- super("Journaux", true, true, true, true);
- _logDir = new File("opc-client.log"); //!!! mettez ici votre fichier
- _fileLenght = _logDir.length();
-
- createUserInterface();
- startRefreshingLog();
- new Thread(new LenghtDetect()).start();
- }
-
- @Override
- public void dispose() {
- // Stop refresh if it is running.
- _closing = true;
- super.dispose();
- }
-
- /**
- * Close this sheet.
- */
- private void performClose() {
- dispose();
- }
-
- /**
- * Start a thread to refrsh the log.
- */
- private synchronized void startRefreshingLog() {
- if (!_refreshing) {
-
- new Thread(new Refresher()).run();
-
- }
- // refreshLog();
- }
-
- /**
- * Enables the log combo box and refresh button using the Swing event
- * thread.
- */
- private void enableComponents(final boolean enabled) {
- Runnable todo = new Runnable() {
-
- public void run() {
- _refreshBtn.setEnabled(enabled);
- }
- };
- if (SwingUtilities.isEventDispatchThread()) {
- todo.run();
- } else {
- try {
- SwingUtilities.invokeAndWait(todo);
- } catch (InterruptedException ex) {
- _log.error(ex);
- } catch (InvocationTargetException ex) {
- _log.error(ex);
- }
- }
- }
-
- /**
- * Refresh the log.
- */
- private void refreshLog() {
- enableComponents(false);
- setCursor(new Cursor(Cursor.WAIT_CURSOR));
- try {
- _logContentsTxt.setText("");
-
- final File logFile = _logDir;
- if (logFile != null) {
- try {
- if (logFile.exists() && logFile.canRead()) {
- final BufferedReader rdr = new BufferedReader(new FileReader(logFile));
- try {
- String line = null;
- StringBuffer chunk = new StringBuffer(16384);
- while ((line = rdr.readLine()) != null) {
- if (_closing) {
- return;
- }
-
- if (chunk.length() > 16000) {
- final String finalLine = chunk.toString();
-
- if (!_closing) {
- _logContentsTxt.append(finalLine);
- }
-
- chunk = new StringBuffer(16384);
- } else {
- if (shouldAppendLineToChunk(line)) {
- chunk.append(line).append('\n');
- }
- }
- }
-
- if (_closing) {
- return;
- }
-
- final String finalLine = chunk.toString();
- if (!_closing) {
- _logContentsTxt.append(finalLine);
- }
-
- } finally {
- rdr.close();
- }
- }
- } catch (Exception ex) {
- // i18n[ViewLogsSheet.error.processinglogfile=Error occured processing log file]
- final String msg = "ViewLogsSheet.error.processinglogfile";
- _log.error(msg, ex);
- }
- } else {
- // i18n[ViewLogsSheet.info.nulllogfile=Null log file name]
- _log.debug("ViewLogsSheet.info.nulllogfile");
- }
-
- if (_closing) {
- return;
- }
-
- // Position to the start of the last line in log.
- try {
- int pos = Math.max(0, _logContentsTxt.getText().length() - 1);
- int line = _logContentsTxt.getLineOfOffset(pos);
- final int finalpos = _logContentsTxt.getLineStartOffset(line);
- _logContentsTxt.setCaretPosition(finalpos);
-
- } catch (Exception ex) {
- // i18n[ViewLogsSheet.error.setcaret=Error positioning caret in log text component]
- _log.error("ViewLogsSheet.error.setcaret", ex);
- }
- } finally {
- enableComponents(true);
- _refreshing = false;
- setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
- }
- }
-
- /**
- 199828 [Foo Thread] message
- * @param line
- * @return
- */
- private boolean shouldAppendLineToChunk(String line) {
- boolean result = false;
- if (line == null || line.length() == 0) {
- return false;
- }
- if (_errorChkbox.isSelected() && _debugChkbox.isSelected() && _infoChkbox.isSelected()) {
- return true;
- }
- int threadNameEndIdx = line.indexOf("]");
- if (threadNameEndIdx > -1) {
- if (threadNameEndIdx + 2 >= line.length()) {
- return false;
- } //Garde de fou
- char levelChar = line.charAt(threadNameEndIdx + 2);
- if (_errorChkbox.isSelected() && levelChar == 'E') {
- result = true;
- }
- if (_debugChkbox.isSelected() && levelChar == 'D') {
- result = true;
- }
- if (_infoChkbox.isSelected() && levelChar == 'I') {
- result = true;
- }
- if (levelChar != 'E' && levelChar != 'D' && levelChar != 'I') {
- result = true;
- }
- } else {
- result = true;
- }
- return result;
- }
-
- /**
- * Create user interface.
- */
- private void createUserInterface() {
- setDefaultCloseOperation(DISPOSE_ON_CLOSE);
- // putClientProperty("JInternalFrame.isPalette", true);
- Container contentPane = getContentPane();
- contentPane.setLayout(new BorderLayout());
- // contentPane.add(createToolBar(), BorderLayout.NORTH);
- contentPane.add(createMainPanel(), BorderLayout.CENTER);
- contentPane.add(createButtonsPanel(), BorderLayout.SOUTH);
- pack();
-
-
- AbstractAction closeAction = new AbstractActionImpl();
- KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
- getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(escapeStroke, "CloseAction");
- getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escapeStroke, "CloseAction");
- getRootPane().getInputMap(JComponent.WHEN_FOCUSED).put(escapeStroke, "CloseAction");
- getRootPane().getActionMap().put("CloseAction", closeAction);
-
- }
-
-
- /**
- * Create the main panel containing the log details and selector.
- */
- private JPanel createMainPanel() {
-
- // File appLogFile = new ApplicationFiles().getExecutionLogFile();
- final JPanel pnl = new JPanel(new BorderLayout());
- _logContentsTxt.setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 0));
- pnl.add(new JScrollPane(_logContentsTxt), BorderLayout.CENTER);
-
- return pnl;
- }
-
- /**
- * Create panel at bottom containing the buttons.
- */
- private JPanel createButtonsPanel() {
- JPanel pnl = new JPanel();
-
- pnl.add(_refreshBtn);
- _refreshBtn.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent evt) {
- startRefreshingLog();
- }
- });
-
- JButton closeBtn = new JButton("Fermer");
- closeBtn.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent evt) {
- performClose();
- }
- });
- pnl.add(closeBtn);
-
- _errorChkbox.setSelected(true);
-
- _debugChkbox.setSelected(true);
- _infoChkbox.setSelected(true);
- ActionListener changeLogListener= new ChangeLogListener();
- _errorChkbox.addActionListener(changeLogListener);
- _debugChkbox.addActionListener(changeLogListener);
- _infoChkbox.addActionListener(changeLogListener);
- pnl.add(_errorChkbox);
- pnl.add(_infoChkbox);
- pnl.add(_debugChkbox);
- //GUIUtilities.setJButtonSizesTheSame(new JButton[]{closeBtn, _refreshBtn});
- getRootPane().setDefaultButton(closeBtn);
-
- return pnl;
- }
-
- private final class ChangeLogListener implements ActionListener {
- public void actionPerformed(ActionEvent evt) {
- ViewLogsSheet.this.startRefreshingLog();
- }
- }
-
- private final class Refresher implements Runnable {
-
- public void run() {
- // ViewLogsSheet.this.
- refreshLog();
- }
- }
-
- private class LenghtDetect implements Runnable {
-
- public void run() {
- while (!_closing) {
- try {
- Thread.sleep(1000);
- if(_fileLenght<_logDir.length()){
- if(!_refreshing)refreshLog(); //doit être exécuter sur le même thread
- _fileLenght = _logDir.length();
- }
- } catch (InterruptedException ex) {
- _log.error("Erreur Thread lecture console",ex);
- }
- }
- }
- }
-
- private class AbstractActionImpl extends AbstractAction {
- private static final long serialVersionUID = 1L;
- public AbstractActionImpl() {
- }
-
- public void actionPerformed(ActionEvent actionEvent) {
- performClose();
- }
- }
- }
/*
* Copyright (C) 2002-2006 Colin Bell
* colbell@users.sourceforge.net
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.reflect.InvocationTargetException;
import javax.swing.*;
import org.apache.log4j.Logger;
/**
* This sheet shows the SQuirreL log files.
*
* @author <A HREF="mailto:colbell@users.sourceforge.net">Colin Bell</A>
* Ce n'est pas la version original..
*/
public class ViewLogsSheet extends JInternalFrame {
/** Logger for this class. */
private static Logger _log = Logger.getLogger(ViewLogsSheet.class);
/** Combo box containing all the log files. */
/** Text area containing the log contents. */
private final JTextArea _logContentsTxt = new JTextArea(20, 50);
/** Button that refreshes the log contents. */
private final JButton _refreshBtn = new JButton("Rafraichir");
private final JCheckBox _errorChkbox = new JCheckBox("Errors");
private final JCheckBox _debugChkbox = new JCheckBox("Debug");
private final JCheckBox _infoChkbox = new JCheckBox("Info");
/** Directory containing the log files. */
private final File _logDir;
/** If <TT>true</TT> user is closing this window. */
private boolean _closing = false;
/** If <TT>true</TT> log is being refreshed. */
private boolean _refreshing = false;
/** Size of current log file */
private long _fileLenght;
private static final long serialVersionUID = 1L;
/**
*
*
* @throws IllegalArgumentException
* Thrown if a <TT>null</TT> <TT>IApplication passed.
*/
public ViewLogsSheet() {
super("Journaux", true, true, true, true);
_logDir = new File("opc-client.log"); //!!! mettez ici votre fichier
_fileLenght = _logDir.length();
createUserInterface();
startRefreshingLog();
new Thread(new LenghtDetect()).start();
}
@Override
public void dispose() {
// Stop refresh if it is running.
_closing = true;
super.dispose();
}
/**
* Close this sheet.
*/
private void performClose() {
dispose();
}
/**
* Start a thread to refrsh the log.
*/
private synchronized void startRefreshingLog() {
if (!_refreshing) {
new Thread(new Refresher()).run();
}
// refreshLog();
}
/**
* Enables the log combo box and refresh button using the Swing event
* thread.
*/
private void enableComponents(final boolean enabled) {
Runnable todo = new Runnable() {
public void run() {
_refreshBtn.setEnabled(enabled);
}
};
if (SwingUtilities.isEventDispatchThread()) {
todo.run();
} else {
try {
SwingUtilities.invokeAndWait(todo);
} catch (InterruptedException ex) {
_log.error(ex);
} catch (InvocationTargetException ex) {
_log.error(ex);
}
}
}
/**
* Refresh the log.
*/
private void refreshLog() {
enableComponents(false);
setCursor(new Cursor(Cursor.WAIT_CURSOR));
try {
_logContentsTxt.setText("");
final File logFile = _logDir;
if (logFile != null) {
try {
if (logFile.exists() && logFile.canRead()) {
final BufferedReader rdr = new BufferedReader(new FileReader(logFile));
try {
String line = null;
StringBuffer chunk = new StringBuffer(16384);
while ((line = rdr.readLine()) != null) {
if (_closing) {
return;
}
if (chunk.length() > 16000) {
final String finalLine = chunk.toString();
if (!_closing) {
_logContentsTxt.append(finalLine);
}
chunk = new StringBuffer(16384);
} else {
if (shouldAppendLineToChunk(line)) {
chunk.append(line).append('\n');
}
}
}
if (_closing) {
return;
}
final String finalLine = chunk.toString();
if (!_closing) {
_logContentsTxt.append(finalLine);
}
} finally {
rdr.close();
}
}
} catch (Exception ex) {
// i18n[ViewLogsSheet.error.processinglogfile=Error occured processing log file]
final String msg = "ViewLogsSheet.error.processinglogfile";
_log.error(msg, ex);
}
} else {
// i18n[ViewLogsSheet.info.nulllogfile=Null log file name]
_log.debug("ViewLogsSheet.info.nulllogfile");
}
if (_closing) {
return;
}
// Position to the start of the last line in log.
try {
int pos = Math.max(0, _logContentsTxt.getText().length() - 1);
int line = _logContentsTxt.getLineOfOffset(pos);
final int finalpos = _logContentsTxt.getLineStartOffset(line);
_logContentsTxt.setCaretPosition(finalpos);
} catch (Exception ex) {
// i18n[ViewLogsSheet.error.setcaret=Error positioning caret in log text component]
_log.error("ViewLogsSheet.error.setcaret", ex);
}
} finally {
enableComponents(true);
_refreshing = false;
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}
/**
199828 [Foo Thread] message
* @param line
* @return
*/
private boolean shouldAppendLineToChunk(String line) {
boolean result = false;
if (line == null || line.length() == 0) {
return false;
}
if (_errorChkbox.isSelected() && _debugChkbox.isSelected() && _infoChkbox.isSelected()) {
return true;
}
int threadNameEndIdx = line.indexOf("]");
if (threadNameEndIdx > -1) {
if (threadNameEndIdx + 2 >= line.length()) {
return false;
} //Garde de fou
char levelChar = line.charAt(threadNameEndIdx + 2);
if (_errorChkbox.isSelected() && levelChar == 'E') {
result = true;
}
if (_debugChkbox.isSelected() && levelChar == 'D') {
result = true;
}
if (_infoChkbox.isSelected() && levelChar == 'I') {
result = true;
}
if (levelChar != 'E' && levelChar != 'D' && levelChar != 'I') {
result = true;
}
} else {
result = true;
}
return result;
}
/**
* Create user interface.
*/
private void createUserInterface() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
// putClientProperty("JInternalFrame.isPalette", true);
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
// contentPane.add(createToolBar(), BorderLayout.NORTH);
contentPane.add(createMainPanel(), BorderLayout.CENTER);
contentPane.add(createButtonsPanel(), BorderLayout.SOUTH);
pack();
AbstractAction closeAction = new AbstractActionImpl();
KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(escapeStroke, "CloseAction");
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escapeStroke, "CloseAction");
getRootPane().getInputMap(JComponent.WHEN_FOCUSED).put(escapeStroke, "CloseAction");
getRootPane().getActionMap().put("CloseAction", closeAction);
}
/**
* Create the main panel containing the log details and selector.
*/
private JPanel createMainPanel() {
// File appLogFile = new ApplicationFiles().getExecutionLogFile();
final JPanel pnl = new JPanel(new BorderLayout());
_logContentsTxt.setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 0));
pnl.add(new JScrollPane(_logContentsTxt), BorderLayout.CENTER);
return pnl;
}
/**
* Create panel at bottom containing the buttons.
*/
private JPanel createButtonsPanel() {
JPanel pnl = new JPanel();
pnl.add(_refreshBtn);
_refreshBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
startRefreshingLog();
}
});
JButton closeBtn = new JButton("Fermer");
closeBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
performClose();
}
});
pnl.add(closeBtn);
_errorChkbox.setSelected(true);
_debugChkbox.setSelected(true);
_infoChkbox.setSelected(true);
ActionListener changeLogListener= new ChangeLogListener();
_errorChkbox.addActionListener(changeLogListener);
_debugChkbox.addActionListener(changeLogListener);
_infoChkbox.addActionListener(changeLogListener);
pnl.add(_errorChkbox);
pnl.add(_infoChkbox);
pnl.add(_debugChkbox);
//GUIUtilities.setJButtonSizesTheSame(new JButton[]{closeBtn, _refreshBtn});
getRootPane().setDefaultButton(closeBtn);
return pnl;
}
private final class ChangeLogListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
ViewLogsSheet.this.startRefreshingLog();
}
}
private final class Refresher implements Runnable {
public void run() {
// ViewLogsSheet.this.
refreshLog();
}
}
private class LenghtDetect implements Runnable {
public void run() {
while (!_closing) {
try {
Thread.sleep(1000);
if(_fileLenght<_logDir.length()){
if(!_refreshing)refreshLog(); //doit être exécuter sur le même thread
_fileLenght = _logDir.length();
}
} catch (InterruptedException ex) {
_log.error("Erreur Thread lecture console",ex);
}
}
}
}
private class AbstractActionImpl extends AbstractAction {
private static final long serialVersionUID = 1L;
public AbstractActionImpl() {
}
public void actionPerformed(ActionEvent actionEvent) {
performClose();
}
}
}
Conclusion
J'avais proposé il y a quelque temps une technique pour redirigé la console, mais c'est un procédé lourd. Celle-ci me semble plus sympa. Si il y a un bug dans le code, je vous souhaite bonne chance ca je n'ai pas laissé tellement de commentaires.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
log4j deux fichiers .log [ par betty555 ]
Bonjour, J'ai configuré mon fichier log4j.properties que j'ai rajouté dans mon classpath. Le problème c'est que j'ai bien la création de mon fichier
log de la machine virtuelle et performance ! [ par jfrancois570 ]
Lorsqu’on configure le log JAVA de la machine virtuelle. Dans le panneau de configuration JAVA, tab Advanced, cocher Enable tracing et Enable loggin
log4j [ par betty555 ]
Bonjour, Est ce qu'il y aurai une possibilité d'afficher que les messages info dans la console, et les messages d'erreurs dans un fichier logs? J'ar
Log4j sous eclips [ par omarboutkhoum ]
Bonjour a tous quelqu'un peut me guider sur les etapes d'implementer le log4j sous eclips, j'ai deja essayé mais la je me suis coincis, le lancement d
c quoi log4j?, [ par experttun ]
Salut, est ce que je peut savoir c quoi log4j , je suis entrain de réaliser un programme en JAVA et j'ai des erreurs voici un exemple: log4j:WARN No
Lojg [ par limalima ]
Bonjour, je suis entrain de voir comment utiliser la librairie log4j, ça l'aire simple, mais à l'exécution de mon programme , ma console se trouve p
STRUTS 2 et HIBERNATE [ par bruno1502 ]
Bonjour à tous, j'ai un souci que je traine depuis quelques jours..... Je commence un projet web utilisant les technos STRUTS 2 et hibernate... Donc,
Ecriture dans un fichier [ par popodounet ]
Bonjour à tous, Voila j'essaye à l'"aide de cette méthode d'écrire dans un fichier mais lorsque je store une deuxième ligne elle ne s'affiche pas p
probleme d'authentification [ par Alizzy ]
je developpe une application avec netbeans et là je fais des contrôles pour l'authentification des utilisateurs mais en vain. je crois que j'ai dejà t
Framewrok de Log [ par mohcine_chibane ]
Bonjour, Dans le cadre d'un projet, j'aimerai développer un Framewrok customisé de logs pour permettre à d'autres développeurs d'intégrer dans leurs
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SQLRE : SQL par Julien39
Cliquez pour lire la suite par Julien39
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|