As chamadas System.out.print e System.err.print devem ser os recursos mais comumente utilizados em Java, e frequentemente utilizado nos exemplos deste blog, mas este tipo de recurso deve ser utilizado com objetivo limitado principalmente em testes ou debugs rapidos, sendo preferivel o uso de uma API de log para o registro de mensagens importantes na avaliacao da saude de uma aplicacao. Mas, voce gostaria de continuar utilizando as chamadas System por uma questao de apego ou qualquer outro motivo, entao veremos nesta postagem como redirecionar a saida destas chamadas para um arquivo.Direto para o codigoVamos direto para o codigo e depois algumas consideracoes:import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;public class SysErrOutRedirect { public static void main(final String[] args) { FileOutputStream efos = null; try { efos = new FileOutputStream("err.txt", true); final PrintStream ps = new PrintStream(efos); // aqui ocorre o redirecionamento de System.err System.setErr(ps); } catch(final FileNotFoundException e) { // tratamento do erro } FileOutputStream ofos = null; try { ofos = new FileOutputStream("out.txt", true); final PrintStream ps = new PrintStream(ofos); // aqui ocorre o redirecionamento de System.out System.setOut(ps); } catch(final FileNotFoundException e) { // tratamento do erro } System.err.println("Enviando mensagem para um arquivo."); System.out.println("Enviando mensagem para outro arquivo."); try { throw new Exception("Uma excecao gerada para teste"); } catch(final Exception e) { // e.printStackTrace() tambem e enviado para System.err e.printStackTrace(); } // fechando streams try { if(efos != null) { efos.close(); } if(ofos != null) { ofos.close(); } } catch(final IOException e) {} }}ResultadoApos a execucao deste codigo, voce tera 2 arquivos criados.O err.txt com uma linha de texto "Enviando mensagem para um arquivo." e o stacktrace da excecao de teste. Isto e apenas para demostrar que o Java direciona as chamadas printStackTrace para o System.err.E o out.txt com uma linha de texto "Enviando mensagem para outro arquivo.".Obs.: o construtor de FileOutputStream esta utilizando append, entao os arquivos nao serao sobrescritos.Mas, e o console?Com o codigo postado acima os textos enviados passarao a aparecer somente nos arquivos citados, mas, talvez, voce gostaria de ver os textos tambem no console da sua IDE favorita enquanto realiza o desenvolvimento e testes da sua aplicacao.Bem, isto e possivel com implementacao de replicadores de streams. Uma recomendacao e a implementacao org.apache.commons.io.output.TeeOutputStream disponivel na Commons IO da Apache, mas voce pode fazer uma pesquisa por TeeStream e ira achar diversas implementacoes para escolher. Em maquinas com uma placa de rede as vezes sao necessarias algumas configuracoes especiais caso seja necessario definir mais de um endereco IP. Entre estas configuracoes especiais temos a definicao de interfaces virtuais e alias de interface. Nesta postagem vamos verificar estas configuracoes em uma maquina Debian.A configuracao principalToda configuracao permanente de interface no Debian e realizada no arquivo /etc/network/interfaces:# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0allow-hotplug eth0iface eth0 inet dhcp# interface virtual com dhcpauto macvlan0allow-hotplug macvlan0iface macvlan0 inet dhcp pre-up ip link add macvlan0 link eth0 type macvlan pre-down ip link delete macvlan0# interface aliasing com IP fixoauto eth0:0allow-hotplug