Bem, se você guarda o usuário na sessão com o servlet, então pode sim pegar o valor dele quando bem entender 
Te pergunto uma coisa: todos os seus métodos de Update tem um formato padrão? Só assim penso que seria possível automatizar a coisa toda, pois poderia pegar o valor velho e o novo sem problemas.
Usando AOP (o que não manjo quase nada), poderia interceptar, por exemplo, todos os métodos que possuem a palavra “update”, contidos em classes que contém a palavra “DAO”. Então por reflection conseguiria pegar todas os nomes das propriedades e salvar na tabela de log.
public class ReflectionTest
{
public static void main( String[] args )
{
new ReflectionTest();
}
public ReflectionTest()
{
Pessoa velha = new Pessoa();
velha.setNome( "lipe" );
velha.setCep( "04111001" );
Pessoa nova = new Pessoa();
nova.setNome( "lipe" );
nova.setCep( "04222002" );
update( velha, nova );
}
public void update( Object velho, Object novo )
{
Map changeds = new HashMap();
try
{
Class clazz = velho.getClass();
Method[] methods = clazz.getDeclaredMethods();
Field[] fields = clazz.getDeclaredFields();
for( int i = 0; i < fields.length; i++ )
{
String fieldName = fields[ i ].getName();
Method method = clazz.getMethod( "get" + getFirstUpper( fieldName ), null );
Object oldFieldValue = method.invoke( velho, null );
Object newFieldValue = method.invoke( novo, null );
if( !oldFieldValue.equals( newFieldValue ) )
changeds.put( fieldName, new Object[] { oldFieldValue, newFieldValue } );
}
}
catch( Exception e )
{
e.printStackTrace();
}
for( Iterator iter = changeds.keySet().iterator(); iter.hasNext(); )
{
String key = ( String ) iter.next();
Object[] values = ( Object[] ) changeds.get( key );
System.out.println( "propriedade: " + key + ", oldValue: " + values[ 0 ] + ", newValue: " + values[ 1 ] );
}
}
private String getFirstUpper( String s )
{
return s.substring( 0, 1 ).toUpperCase().concat( s.substring( 1 ) );
}
}
class Pessoa
{
private String nome;
private String cep;
public String getCep()
{
return cep;
}
public String getNome()
{
return nome;
}
public void setCep( String cep )
{
this.cep = cep;
}
public void setNome( String nome )
{
this.nome = nome;
}
}
Desta maneira você consegue saber quais são as propriedades que sofreram modificação. Ali no laço que itera pelo mapa entraria o código para inserir as linhas na tabela de Log, bem como pegar o nome do usuário que está na sessão.