Using neural network regression for skewed data
I faced this problem many times, these are the two solutions that worked best based on my experience:


The log(x+1) transformation as you proposed: you take log( x + 1 ). This is the log of the distribution. If your dependent variable has a lower bound (i.e. a minimum value it can possibly take) then I suggest you to use log( x + 1 ) + min( x ). In this way you constrain the distribution to take only positive values, and use ReLU at the output node
One that I tried recently at work and that worked very well is a scaling between 1 and the 95th percentile. This operation is analogous to the more classical min-max scaling, but instead calculating it using min(x) and max(x), you shring min(x) and 95th percentile. I said 95th percentile, but 99th or any other could also work well - you can choose the one that best fits your task. This become very useful when simple min-max scaling doesn't work (i.e. when shrinking everything in the 0-1 range would cause smaller observations to "disappear"). What you'll have in the end is a distribution with almost any observation in the 0-1 range, with very few outliers beyond that, with little influence on the overall quality of the prediction. This technique assume a ReLU activation at the output node. In this way you make sure to always get outputs in the desired, meaningful range.


I tried other techniques (one based on the upper part of Sigmoid function, and many other based on sequences of transformations with logs, square roots, standardization, and other monotonic functions), but they didn't perform better than the two I chose. Of course this is only based on personal experience.

PS:  These custom standardization cannot rely on methods such as sklearn's .fit() method. Remember to manually save the parameters in a specific file, otherwise you won't be able to revert your distribution back to the original!