Since you shouldn't use I/O operations inside EJB methods, you should avoid using solutions like log4j inside EJB methods.
One approach could be use interceptors to log information before and after EJB method execution. You can get information about what happened inside the method from InvocationContext _ctx (Object executionResult = _ctx.proceed();).
Hope this helps,
machines help you to do more, but experience less. Experience this tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop